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实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
JavaScript获取网页支持表单字符集的方法
Apr 02 Javascript
jQuery使用deferreds串行多个ajax请求
Aug 22 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
angularjs实现猜数字大小功能
May 20 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 Javascript
深入理解JavaScript 箭头函数
May 30 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 常见郁闷问题答解
2006/11/25 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
js中的string.format函数代码
2020/08/11 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
python操作oracle的完整教程分享
2018/01/30 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python实现自动化上线脚本的示例
2019/07/01 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
最新教师自我评价分享
2013/11/12 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
python之基数排序的实现
2021/07/26 Python
Golang连接并操作MySQL
2022/04/14 MySQL