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可访问其它域名的cookie的方法
Sep 18 Javascript
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
jQuery实现的类flash菜单效果代码
May 17 Javascript
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
简单的JS轮播图代码
Jul 18 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 Javascript
基于Angularjs-router动态改变Title值的问题
Aug 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 setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
浅谈js原生拖放
2016/11/21 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
python中wheel的用法整理
2020/06/15 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
群众路线批评与自我批评
2014/02/06 职场文书
心理健康活动总结
2014/04/30 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
社区活动总结范文
2015/05/07 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
2015年教研员工作总结
2015/05/26 职场文书