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 相关文章推荐
漂亮的仿flash菜单,来自蓝色经典
Jun 26 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
Sep 27 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
canvas简单快速的实现知乎登录页背景效果
May 08 Javascript
JS实现留言板功能
Jun 17 Javascript
微信小程序页面滑动屏幕加载数据效果
Nov 16 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
es6 filter() 数组过滤方法总结
Apr 03 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
vue+koa2搭建mock数据环境的详细教程
May 18 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+redis实现添加处理投票的方法
2015/11/14 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
Element Input组件分析小结
2018/10/11 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Django框架反向解析操作详解
2019/11/28 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
Python设计密码强度校验程序
2020/07/30 Python
Python Map 函数的使用
2020/08/28 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
2014年党支部工作总结
2014/11/13 职场文书
个人先进材料范文
2014/12/30 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
MySQL库表名大小写的选择
2021/06/05 MySQL
解决redis批量删除key值的问题
2022/03/23 Redis