Vue使用zTree插件封装树组件操作示例


Posted in Javascript onApril 25, 2019

本文实例讲述了Vue使用zTree插件封装树组件操作。分享给大家供大家参考,具体如下:

1.通过npm安装jquery

npm install jquery --save-dev

2.在build/webpack.base.conf文件当中引入jquery

module.exports = {
  ...
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'jquery': path.resolve(__dirname, '../node_modules/jquery/src/jquery')
    }
  },
  ...
}

3.在项目根目录创建一个文件夹plugins,将zTree的js文件放进去

Vue使用zTree插件封装树组件操作示例

4.将zTree的样式文件放在static文件夹下(放在别的地方大饱之后会出现图片路径找不到等问题,放在static下打包时会避免ztree样式的压缩)。在main.js中引入该样式:

import '../static/zTreeStyle/zTreeStyle.css'

5.创建公共组件ztree>index.vue,下面为我的公共组件

html:

<template>
  <div class="ztree">
    <el-row>
      <el-col :span="12">
        <el-button icon="el-icon-plus" size="mini" type="text" @click="add">新增节点</el-button>
      </el-col>
      <el-col :span="12">
        <el-button icon="el-icon-delete" type="text" size="mini" @click="remove">删除节点</el-button>
      </el-col>
    </el-row>
    <ul id="treeDemo" class="ztree"></ul>
    </div>
</template>

js:

<script>
import '../../../plugins/zTree/jquery-1.4.4.min'
import '../../../plugins/zTree/jquery.ztree.core'
import '../../../plugins/zTree/jquery.ztree.excheck'
import '../../../plugins/zTree/jquery.ztree.exedit'
export default {
  props: {
    zNodes: {
      type: Array
    },
    selectedNodeId: ""
  },
  data() {
    return {
      selectedNode: {},
      setting: {
        view: {
          showIcon: false
        },
        edit: {
          enable: true,
          showRemoveBtn: false,
          showRenameBtn: false
        },
        data: {
          keep: {
            parent: true,
            leaf: true
          },
          simpleData: {
            enable: true
          }
        },
        callback: {
          onClick: this.zTreeOnClick,
          onRename: this.zTreeOnRename
        }
      }
    };
  },
  methods: {
    // 初始化ztree
    init() {
      $.fn.zTree.init($("#treeDemo"), this.setting, this.zNodes);
    },
    // 树节点点击事件
    zTreeOnClick: function(event, treeId, treeNode) {
      this.selectedNode = treeNode;
      this.$emit("treeClick", treeNode);
    },
    // 树节点编辑名称回调
    zTreeOnRename(event, treeId, treeNode, isCancel) {
      this.$emit("addNode", treeNode);
    },
    // 点击添加按钮事件
    add() {
      let newCount = 1;
      let zTree = $.fn.zTree.getZTreeObj("treeDemo"),
      nodes = zTree.getSelectedNodes(),
      treeNode = nodes[0];
      if (treeNode) {
        if (treeNode.level === 2) {
          this.$message("分类不能超过三级");
          return;
        } else {
          treeNode = zTree.addNodes(treeNode, {
            id: 100 + newCount,
            isParent: true,
            pId: treeNode.id,
            name: "new node" + newCount++
          });
        }
      } else {
        treeNode = zTree.addNodes(null, {
          id: 100 + newCount,
          isParent: true,
          pId: 0,
          name: "new node" + newCount++
        });
       }
      zTree.editName(treeNode[0]);
    },
    // 点击删除按钮事件
    remove() {
      let zTree = $.fn.zTree.getZTreeObj("treeDemo"),
      nodes = zTree.getSelectedNodes(),
      treeNode = nodes[0];
      if (nodes.length == 0) {
        this.$message("请先选择一个节点");
        return;
      } else {
        this.$confirm("此操作将永久删除该节点, 是否继续?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
        .then(() => {
          this.$emit("removeNode", treeNode);
        })
        .catch(() => {});
      }
    }
  },
  watch: {
    // 监听树节点的变化更新树
    zNodes: function(val) {
      this.init();
    },
  },
  mounted() {
    this.init();
  }
};
</script>

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
javascript奇异的arguments分析
Oct 20 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
自己使用jquery写的一个无缝滚动的插件
Apr 30 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
javascript的push使用指南
Dec 05 Javascript
重写document.write实现无阻塞加载js广告(补充)
Dec 12 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
微信小程序swiper实现滑动放大缩小效果
Nov 15 Javascript
JS实现判断有效的数独算法示例
Feb 25 Javascript
JavaScript数组去重的几种方法
Apr 07 Javascript
vue操作动画的记录animate.css实例代码
Apr 26 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 Javascript
详解javascript中的Error对象
Apr 25 #Javascript
Vue开发之封装上传文件组件与用法示例
Apr 25 #Javascript
vue2.0自定义指令示例代码详解
Apr 25 #Javascript
Vue开发之封装分页组件与使用示例
Apr 25 #Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 #Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 #Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 #Javascript
You might like
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
基于FME使用Python过程图解
2020/05/13 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
社区安全检查制度
2014/02/03 职场文书
小学综合实践活动总结
2014/07/07 职场文书
检讨书范文500字
2015/01/28 职场文书
大学生自荐信范文
2015/03/05 职场文书
优秀员工自荐书
2015/03/06 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
走进毛泽东观后感
2015/06/04 职场文书
辅导员学期工作总结
2015/08/14 职场文书