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_08_函数对象
Oct 15 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
jQuery的slideToggle方法实例
May 07 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
js 提交form表单和设置form表单请求路径的实现方法
Oct 25 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
vue项目中使用vue-i18n报错的解决方法
Jan 13 Javascript
如何在selenium中使用js实现定位
Aug 18 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
详解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的array_multisort()使用方法介绍
2012/05/16 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
javascript replace方法与正则表达式
2008/02/19 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
详解Vite的新体验
2021/02/22 Javascript
python中文编码问题小结
2014/09/28 Python
Python合并多个装饰器小技巧
2015/04/28 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
python实现分页效果
2017/10/25 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
为什么需要版本控制
2016/10/28 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
法律六进活动方案
2014/03/13 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
春节随笔
2015/08/15 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android