vue中应用ztree
应用步骤如下
npm install @ztree/ztree_v3
- ztree依赖jquery,下载jquery
npm install jquery
所以须要在vue.config.js中配置jqueryplugins: [ new webpack.ProvidePlugin({ $:"jquery", jQuery:"jquery", "windows.jQuery":"jquery" }) ],
3.在main.js中援用
import '@ztree/ztree_v3/js/jquery.ztree.core.min.js'import '@ztree/ztree_v3/js/jquery.ztree.excheck.min.js'// import '@ztree/ztree_v3/css/zTreeStyle/zTreeStyle.css'(ztree另一种款式)import '@ztree/ztree_v3/css/metroStyle/metroStyle.css'
4.封装ztree组件
<template> <div class="treeBox"> <div> <ul :id="id" class="ztree"></ul> </div> </div></template><script>export default { name: "ZTree", props: { zNodes: {//树结构数据 type: Array, default () { return []; } }, id:{ type: String, default () { return 'treeDemo'; } }, isShowBtn_modify:{ type: Boolean, default:false }, isShowBtn_delete:{ type: Boolean, default:false } }, data() { return { setting:{ //树形构造设置参数 data:{ key: { name: "name" }, simpleData:{ enable: true, idKey: "deptId", pIdKey: "parentId", rootPId: 0 } }, view: { showLine: false//连接线 }, edit: {//是否能够删除编辑 enable: true, showRemoveBtn: this.isShowBtn_modify, removeTitle: "删除", showRenameBtn: this.isShowBtn_delete, renameTitle: "编辑" }, callback: { onClick: this.onNodeClick, beforeEditName: this.beforeEditName,//批改节点之前 beforeRemove:this.beforeRemove//删除节点之前 } } } }, mounted(){ this.init(); }, methods:{ // 初始化ztree init() { if (!this.zNodes) { return } $.fn.zTree.init($("#"+this.id), this.setting, this.zNodes); }, // 单击选中目录 onNodeClick(e, treeId, treeNode) { this.$emit('getTreeNode',treeNode); console.log(treeNode); }, //批改节点之前 beforeEditName(treeId, treeNode){ //发射给父组件信息 this.$emit('zTreeBeforeReName',treeNode.deptId); return false // return !treeNode.isParent; }, //删除节点之前 beforeRemove(treeId, treeNode) { this.$emit('zTreeBeforeRemove',treeNode.deptId); console.log('删除节点之前',treeNode.deptId); return false; }, //开展某节点 expandMode(pid){ $.fn.zTree.init($("#"+this.id), this.setting, this.zNodes); let zTree_Menu = $.fn.zTree.getZTreeObj(this.id); let node = zTree_Menu.getNodeByParam("deptId",pid); zTree_Menu.selectNode(node,true);//指定选中ID的节点 zTree_Menu.expandNode(node, true, false);//指定选中ID节点开展 } }}</script>
5.父组件中援用,记得引入与注册
//页面应用<Ztree :zNodes="pageList" id="modelTree" @getTreeNode="getTreeNode_depart" ref="modelTree" :key="componentKey"></Ztree>
//引入import Ztree from '@/components/common/ZTree.vue'
//data中应用componentKey:0,//强制刷新一下树结构,从新渲染,每次加载数据后须要`this.componentKey++`,不然渲染不进去
//注册组件components:{ Ztree },
6.子组件中的办法,父组件随便援用,例子如下
//刷新树结构办法 refreshTreeMethod(){ this.$refs.pageTree.init();//刷新树结构-页面树 this.componentKey++; },
齐活~~