最近有个vue项目要用ztree。

然后,我想把一些逻辑提出来作为公共的方法,放到独立的js文件里。

ztreeTool.js

import $ from 'jquery'

export default class ZtreeTools {
static beforeDrag(treeId, treeNodes) {
console.log("beforeDrag")
for (var i=0,l=treeNodes.length; i<l; i++) {
if (treeNodes[i].drag === false) {
return false;
}
}
return true;
}
static beforeDrop(treeId, treeNodes, targetNode, moveType) {
console.log("beforeDrop")
return targetNode ? targetNode.drop !== false : true;
}
static addHoverDom(treeId, treeNode) {
console.log(n)
console.log(treeId, treeNode)
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
+ "' title='新建节点' onfocus='this.blur();'></span>";
sObj.after(addStr);
var btn = $("#addBtn_"+treeNode.tId);
if (btn) btn.bind("click", function(){
var zTree = $.fn.zTree.getZTreeObj(treeId);
zTree.addNodes(
treeNode,
{id:(100 + count), pId:treeNode.id, name:"新节点" + (count++)}
);
return false;
});
}
static removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
};
}

main.js

...
import ZtreeTools from './data/ztreeTools'
Vue.prototype.$ZtreeTools = ZtreeTools;
...

那么问题来了:

ztree demo里有一个外部变量count,我们把ztree逻辑抽出来之后怎么处理这个变量?

我的办法是:

把count作为一个独立的计数器放到一个独立类里,在vue项目启动时实例化这个类。


---

number.js

export default class Number {
constructor() {
this.count = 1
}
}

ztreeTool.js

import $ from 'jquery'
import Number from './number.js'
const n = new Number() export default class ZtreeTools {
static beforeDrag(treeId, treeNodes) {
console.log("beforeDrag")
for (var i=0,l=treeNodes.length; i<l; i++) {
if (treeNodes[i].drag === false) {
return false;
}
}
return true;
}
static beforeDrop(treeId, treeNodes, targetNode, moveType) {
console.log("beforeDrop")
return targetNode ? targetNode.drop !== false : true;
}
static addHoverDom(treeId, treeNode) {
console.log(n)
console.log(treeId, treeNode)
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
+ "' title='新建节点' onfocus='this.blur();'></span>";
sObj.after(addStr);
var btn = $("#addBtn_"+treeNode.tId);
if (btn) btn.bind("click", function(){
var zTree = $.fn.zTree.getZTreeObj(treeId);
zTree.addNodes(
treeNode,
{id:(100 + n.count), pId:treeNode.id, name:"新节点" + (n.count++)}
);
return false;
});
}
static removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
};
static reloadNumber(){
n.count = 1
}
}

红色的部分就是改过的部分。这里其实就已经实例化了。

某个页面.vue

...
created(){
...
this.$ZtreeTools.reloadNumber()
...
},
...

每一个页面开始时把计数器重置一下。

以上。

由一个计数器出发:关于vue使用独立js文件的问题的更多相关文章

  1. 最新的vue没有dev-server.js文件,如何进行后台数据模拟?

    https://blog.csdn.net/qq_34645412/article/details/78833860 https://blog.csdn.net/qq_34645412/article ...

  2. vue中创建js文件使用export抛出函数,import引入后不能绑定HTML的问题

    在es6中使用export和import实现模块化: js文件: export function test(x) { console.log(x); } vue组件: import {test} fr ...

  3. 最新的vue没有dev-server.js文件,如何进行后台数据模拟?

    最新的vue里dev-server.js被替换成了webpack-dev-conf.js 在模拟后台数据的时候直接在webpack-dev-conf.js文件中修改 第一步,在const portfi ...

  4. Vue引入远程JS文件

    问题 最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下载到本地应用,找了一下解决的方法,貌似都需要引入第三方的库 ...

  5. vue引入静态js文件

    由于一些演示,需要对编码名称等可快速进行修改,需要页面方便配置.由于build后的vue项目基本已经看不出原样,因此需要创建一个文件,并在打包的时候不会进行编译. vue-cli 2.0的作法是在st ...

  6. vue项目 引入js文件

    例如我想将laydate.js引到vue项目中 将用到的js文件放到static文件夹内,在项目的根目录下的index.html内引入 <script src="static/js/l ...

  7. 使用node创建一个服务器,运行vue打包以后的文件

    原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...

  8. 一个不错的angular 字体库( 引用js文件就行)

    https://klarsys.github.io/angular-material-icons/ 使用方法: 1.引入这个js文件, <script src="//cdnjs.clo ...

  9. vue中的单文件组件

    之前都是在html文件中写组件的css,组件的js,组件的模板来演示vue组件的语法,下面介绍以.vue结尾的单文件组件.vue-loader是一个Webpack的loader,可以将单文件组件转换为 ...

随机推荐

  1. typora中的图片处理20200622

    typora中的图片处理20200622 食用建议 typora作为markdown的书写神器,一般习惯的流程是在typora中写完,然后复制粘贴到博客园中,然而,markdown中图片采用的是本地连 ...

  2. SpringCloud之初识Feign

    在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码: String baseUrl = "http://user-service/user/"; Us ...

  3. Spring Boot2+Resilience4j实现容错之Bulkhead

    Resilience4j是一个轻量级.易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计.轻量级,因为库只使用Vavr,它没有任何其他外部库依赖项.相比之下 ...

  4. 入门大数据---Spark车辆监控项目

    一.项目简介 这是一个车辆监控项目.主要实现了三个功能: 1.计算每一个区域车流量最多的前3条道路. 2.计算道路转换率 3.实时统计道路拥堵情况(当前时间,卡口编号,车辆总数,速度总数,平均速度) ...

  5. linux版本百度网盘只能登录一次的解决方法

    rm -rf ~/baidunetdisk 重新启动百度网盘,解决-

  6. GRpc异常处理Filter

    全局错误处理服务端 微软已经实施了Interceptors,它们类似于Filter或Middlewares在ASP.NET MVC的核心或的WebAPI,它们可以用于全局异常处理,日志记录,验证等. ...

  7. 洛谷 P1025 【数的划分】

    进入正题 思路:递归 这道题有点像放苹果: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 转化一下就有: 把n个苹果放在k个 ...

  8. 路由网关(Zuul)

    上一篇已经讲了微服务组件中的 分布式配置中心,本章讲述 由JAVA编写的服务路由网关Zuul… - Zuul 路由是微服务体系结构的一个组成部分.例如 / 可以映射到您的Web应用程序,/api/us ...

  9. Android详细介绍MPAndroidChart-LineChart

    在开发当中曲线图用的时候太多了,之前都是自己手写,之后发现太累还丑不符合需求 MPAndroidChart 先介绍LineChart 0.效果图 首先依赖  1. implementation 'co ...

  10. java面试知识迷你版

    java基础JUC.AQSJVM类加载过程mybatisSpringspringboot设计模式数据库redis网络问题认证授权Nginxlinux其他lombok消息队列ES缓存分库分表设计高并发系 ...