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 相关文章推荐
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
js获取form表单所有数据的简单方法
Aug 18 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
Jan 13 Javascript
Angular4的输入属性与输出属性实例详解
Nov 29 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
微信小程序的部署方法步骤
Sep 04 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
May 06 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 Javascript
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
如何用JavaScript实现一个数组惰性求值库
May 05 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
详解Python import方法引入模块的实例
2017/08/02 Python
python基本语法练习实例
2017/09/19 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
java关于string最常出现的面试题整理
2021/01/18 Python
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
10条PHP编程习惯
2014/05/26 面试题
PHP如何自定义函数
2016/09/16 面试题
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
护士个人总结范文
2015/02/13 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书