由一个计数器出发:关于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,可以将单文件组件转换为 ...
随机推荐
- 定时任务Cron
Linux系统中的定时任务cron,一个很实际很有效很简单的一个工作,在日常的生产环境中,会被广泛使用的一个组件.通过设置时间.执行的脚本等内容,能够让系统自动的执行相关任务,很是方便. cron定时 ...
- 拿来即用:用C+JS结构来处理JSON数据
[面对的问题] 在物联网产品的开发过程中,对JSON格式的数据处理是一个强需求,例如亚马逊的 AWS IOT平台,设备与后台之间的通讯数据都是JSON格式,先瞄一眼大概的样子: 这是一个真实产品的通讯 ...
- MySQL8.0窗口函数实践及小结
MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle.SQL SERVER .PostgreSQL等其他数据库那样的窗口函数.但随着MySQL8.0中新增了窗口函数之后,针对这类统计 ...
- 入门大数据---Hbase搭建
环境介绍 tuge1 tuge2 tuge3 tuge4 NameNode NameNode DataNode DataNode ZooKeeper ZooKeeper ZooKeeper ZooKe ...
- slow SQL
一.介绍 慢查询日志可用于查找需要很长时间才能执行的查询,因此是优化的候选者.但是,检查长慢的查询日志可能是一项耗时的任务. 二.配置 # 查看: slow_query_log 慢SQL开关 slow ...
- python递归函数实现阶乘函数
实现的效果如下: 参考www.cnblogs.com/yuanchenqi/articles/5828233.html f(5)=5*4*3*2*1=120 f(7)=7*6*5*4*3*2*1= ...
- python中lambda匿名函数与函数之间的关系
- Drools之基础语法
一.规则文件 标准的规则文件以”.drl”结尾. 一套完整的规则文件内容如下: package:包名,只限于逻辑上的管理,若自定义的查询或函数位于同一包名,不管物理位置如何,都可以直接调用. impo ...
- Spring Boot中的事务是如何实现的
本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: Spring Boot中的事务是如何实现的 1. 概述 一直在用SpringBoot中的@Transactional来做事 ...
- 前端开发,页面加载速度性能优化,如何提高web页面加载速度
一个网页访问速度的快慢, 不仅看它服务器的配置,这里除去你空间主机配置很烂的情况以外,我们从网站开发方面来探讨,前端技术需要从哪些方面提高访问的速度,需要用到哪些技术手段. 文件的加载 图标的加载: ...