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 相关文章推荐
js文件缓存之版本管理详解
Jul 05 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
window.onload追加函数使用示例
Mar 03 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
JavaScript、C# URL编码、解码总结
Jan 21 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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/09/05 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
给我一面国旗 python帮你实现
2019/09/30 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
篮球比赛策划方案
2014/06/05 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
介绍信怎么写
2015/05/05 职场文书
八月迷情观后感
2015/06/11 职场文书
信息技术国培研修日志
2015/11/13 职场文书
推普标语口号大全
2015/12/26 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android