由一个计数器出发:关于vue使用独立js文件的问题
最近有个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文件的问题的更多相关文章
- 最新的vue没有dev-server.js文件,如何进行后台数据模拟?
https://blog.csdn.net/qq_34645412/article/details/78833860 https://blog.csdn.net/qq_34645412/article ...
- vue中创建js文件使用export抛出函数,import引入后不能绑定HTML的问题
在es6中使用export和import实现模块化: js文件: export function test(x) { console.log(x); } vue组件: import {test} fr ...
- 最新的vue没有dev-server.js文件,如何进行后台数据模拟?
最新的vue里dev-server.js被替换成了webpack-dev-conf.js 在模拟后台数据的时候直接在webpack-dev-conf.js文件中修改 第一步,在const portfi ...
- Vue引入远程JS文件
问题 最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下载到本地应用,找了一下解决的方法,貌似都需要引入第三方的库 ...
- vue引入静态js文件
由于一些演示,需要对编码名称等可快速进行修改,需要页面方便配置.由于build后的vue项目基本已经看不出原样,因此需要创建一个文件,并在打包的时候不会进行编译. vue-cli 2.0的作法是在st ...
- vue项目 引入js文件
例如我想将laydate.js引到vue项目中 将用到的js文件放到static文件夹内,在项目的根目录下的index.html内引入 <script src="static/js/l ...
- 使用node创建一个服务器,运行vue打包以后的文件
原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...
- 一个不错的angular 字体库( 引用js文件就行)
https://klarsys.github.io/angular-material-icons/ 使用方法: 1.引入这个js文件, <script src="//cdnjs.clo ...
- vue中的单文件组件
之前都是在html文件中写组件的css,组件的js,组件的模板来演示vue组件的语法,下面介绍以.vue结尾的单文件组件.vue-loader是一个Webpack的loader,可以将单文件组件转换为 ...
随机推荐
- 设计模式系列之组合模式(Composite Pattern)——树形结构的处理
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...
- 这一次搞懂Spring Web零xml配置原理以及父子容器关系
前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我 ...
- 什么了解suite集合实现
Testsuite继承BaseTestSuite其实内部的东西不是太多--生成suite集合的逻辑主要如下-我这里没有扒源码-因为他最终生成的TestsSuite关联的模块比较多--如果贴源码出来-- ...
- 深入浅出Transformer
Transformer Transformer是NLP的颠覆者,它创造性地用非序列模型来处理序列化的数据,而且还获得了大成功.更重要的是,NLP真的可以"深度"学习了,各种基于tr ...
- 基于jQuery的打字机函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- win10提示“无法设置移动热点 请打开WLAN”的解决方法
一位用户在使用Win10创意者操作系统过程中,遇到了无法开启移动热点的情况,开关呈灰色状态,而且提示:无法设置移动热点 请打开WLAN,该如何解决呢?该用户表示Wlan一直开着呀,感觉非常奇怪.接下来 ...
- #Google HTML&CSS规范指南
Google HTML&CSS规范指南 翻译自原文 目录 Google HTML&CSS规范指南 1. 背景 2. 通用 2.1 通用样式规则 2.1.1 协议 2.2 通用格式规则 ...
- 【Oracle】如何让一个用户能够访问另外一个用户下所有的表
根据需求的不同,也分为好几种方法,且看下文. 先构造基本的环境:创建两个用户AA,BB,基本需求为用户AA能够访问用户BB下所有的表,即用户AA有对BB下所有的表有"select on&qu ...
- EOS基础全家桶(十四)智能合约进阶
简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...
- The Shortest Statement CodeForces - 1051F 最小生成树+并查集+LCA
题目描述 You are given a weighed undirected connected graph, consisting of n vertices and mm edges. You ...