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一点特殊用法
May 28 Javascript
JQuery 前台切换网站的样式实现
Jun 22 Javascript
js简单实现用户注册信息的校验代码
Nov 15 Javascript
jquery实现拖拽调整Div大小
Jan 30 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 Javascript
简单的渐变轮播插件
Jan 12 Javascript
基于node.js express mvc轻量级框架实践
Sep 14 Javascript
JS实现520 表白简单代码
May 21 Javascript
vue v-model动态生成详解
Jun 30 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
JavaScript观察者模式原理与用法实例详解
Mar 10 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中计算程序运行时间的类代码
2012/11/03 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
Django视图和URL配置详解
2018/01/31 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
keras:model.compile损失函数的用法
2020/07/01 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
幼儿园数学教学反思
2014/02/02 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang