Vue使用zTree插件封裝樹組件操作示例
本文實(shí)例講述了Vue使用zTree插件封裝樹組件操作。分享給大家供大家參考,具體如下:
1.通過npm安裝jquery
npm install jquery --save-dev
2.在build/webpack.base.conf文件當(dāng)中引入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.在項(xiàng)目根目錄創(chuàng)建一個(gè)文件夾plugins,將zTree的js文件放進(jìn)去

4.將zTree的樣式文件放在static文件夾下(放在別的地方大飽之后會出現(xiàn)圖片路徑找不到等問題,放在static下打包時(shí)會避免ztree樣式的壓縮)。在main.js中引入該樣式:
import '../static/zTreeStyle/zTreeStyle.css'
5.創(chuàng)建公共組件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">新增節(jié)點(diǎn)</el-button>
</el-col>
<el-col :span="12">
<el-button icon="el-icon-delete" type="text" size="mini" @click="remove">刪除節(jié)點(diǎn)</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);
},
// 樹節(jié)點(diǎn)點(diǎn)擊事件
zTreeOnClick: function(event, treeId, treeNode) {
this.selectedNode = treeNode;
this.$emit("treeClick", treeNode);
},
// 樹節(jié)點(diǎn)編輯名稱回調(diào)
zTreeOnRename(event, treeId, treeNode, isCancel) {
this.$emit("addNode", treeNode);
},
// 點(diǎn)擊添加按鈕事件
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]);
},
// 點(diǎn)擊刪除按鈕事件
remove() {
let zTree = $.fn.zTree.getZTreeObj("treeDemo"),
nodes = zTree.getSelectedNodes(),
treeNode = nodes[0];
if (nodes.length == 0) {
this.$message("請先選擇一個(gè)節(jié)點(diǎn)");
return;
} else {
this.$confirm("此操作將永久刪除該節(jié)點(diǎn), 是否繼續(xù)?", "提示", {
confirmButtonText: "確定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.$emit("removeNode", treeNode);
})
.catch(() => {});
}
}
},
watch: {
// 監(jiān)聽樹節(jié)點(diǎn)的變化更新樹
zNodes: function(val) {
this.init();
},
},
mounted() {
this.init();
}
};
</script>
希望本文所述對大家vue.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
vue實(shí)現(xiàn)左右點(diǎn)擊滾動效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)左右點(diǎn)擊滾動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
vue 函數(shù)調(diào)用加括號與不加括號的區(qū)別
這篇文章主要介紹了vue 函數(shù)調(diào)用加括號與不加括號的區(qū)別,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-10-10
如何使用vue slot創(chuàng)建一個(gè)模態(tài)框的實(shí)例代碼
這篇文章主要介紹了如何使用vue slot創(chuàng)建一個(gè)模態(tài)框,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Vue突然報(bào)錯(cuò)doesn‘t?work?properly?without?JavaScript?enabled
最近在做項(xiàng)目的時(shí)候遇到了些問題,所以這篇文章主要給大家介紹了關(guān)于Vue突然報(bào)錯(cuò)doesn‘t?work?properly?without?JavaScript?enabled的解決方法,需要的朋友可以參考下2023-01-01
關(guān)于vue.js中實(shí)現(xiàn)方法內(nèi)某些代碼延時(shí)執(zhí)行
今天小編就為大家分享一篇關(guān)于vue.js中實(shí)現(xiàn)方法內(nèi)某些代碼延時(shí)執(zhí)行,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
使用vue-i18n?入口文件配置控制臺報(bào)警問題解決
這篇文章主要介紹了使用vue-i18n?入口文件配置控制臺報(bào)警問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

