不依任何賴第三方,單純用vue實(shí)現(xiàn)Tree 樹形控件的案例
這幾天接到一個(gè)需求,里面有需要做一個(gè)屬性組件,找的第三方的,但是不能完全滿足我的需求,有這時(shí)間,我就自己做個(gè)小輪子吧。
先看效果圖(紅點(diǎn)之前用的字體圖標(biāo),是個(gè)對(duì)號(hào),這里為了方便,用圓圈代替了選中狀態(tài),所以不是太好看,需要的自行修改就好)

我直接用的vue-cli搭建的項(xiàng)目,代碼目錄如下:

使用方式如下:

treeData的格式如下:
treeData: [
{open: false, name: '1', level: 0, checked: true},
{
open: false, // opend 是否展開子集
name: '2',
level: 0, //level代表第幾層
checked: false, // checked 代表是否選中狀態(tài)
children: [
{
open: false,
name: '3',
level: 1,
checked: false,
children: [
{open: false, name: '4', level: 2, checked: false},
{
open: false,
name: '5',
level: 2,
checked: false
}
]
}
]
}
],
這個(gè)組件設(shè)計(jì)到幾個(gè)關(guān)鍵點(diǎn)如下:
1. 深度watch
由于數(shù)據(jù)是個(gè)深層的對(duì)象,所以單純的watch,檢測(cè)不到數(shù)據(jù)的變化,所以使用deep,代碼如下:
watch: {
// 深度監(jiān)聽 treeDate的數(shù)據(jù)變化 用 deep
treeData: {
handler: function (newVal, oldVal) {
this.calculateSelectFormResult()
},
deep: true
}
}
2.遞歸
數(shù)據(jù)的結(jié)果是用遞歸遍歷出來(lái)的,
calculateSelectFormResult: function () {
var arr = []
function f (obj) {
for (var i in obj) {
if (obj[i].checked) {
// console.log(2)
arr.push(obj[i].name)
}
if (obj[i].children) {
if (obj[i].children.length !== 0) {
f(obj[i].children)
}
}
}
}
f(this.treeData)
this.selectFormResult = arr
console.log(this.selectFormResult)
}
3.模擬slideDown slideUp動(dòng)畫效果

項(xiàng)目完整代碼地址: https://github.com/YalongYan/tree
補(bǔ)充知識(shí):vue實(shí)現(xiàn)elment 可編輯樹形控件
功能實(shí)現(xiàn)程度:
elment樹形控件,已具備新增、刪除功能,此項(xiàng)目,添加編輯功能,新增時(shí)可對(duì)節(jié)點(diǎn)命名,也可直接給已添加的節(jié)點(diǎn)修改名字
先看效果:

控件有所改動(dòng),如加輸入框,輸入關(guān)鍵字過(guò)濾,節(jié)點(diǎn)圖標(biāo)變換。。。。參看elment Tree樹形控件文檔即可
項(xiàng)目下載
項(xiàng)目地址:https://github.com/midnightvisitor/vue-el-tree.git
如需要,請(qǐng)自行下載
以上這篇不依任何賴第三方,單純用vue實(shí)現(xiàn)Tree 樹形控件的案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)
- 詳解vue-element Tree樹形控件填坑路
- vue elementUI tree樹形控件獲取父節(jié)點(diǎn)ID的實(shí)例
- vue.js element-ui tree樹形控件改iview的方法
- VUE餓了么樹形控件添加增刪改功能的示例代碼
- 解決ant design vue中樹形控件defaultExpandAll設(shè)置無(wú)效的問題
- vue遞歸組件實(shí)戰(zhàn)之簡(jiǎn)單樹形控件實(shí)例代碼
- vue用遞歸組件寫樹形控件的實(shí)例代碼
- vue+iview使用樹形控件的具體使用
- vue樹形控件tree的使用方法
相關(guān)文章
vue2項(xiàng)目使用element-ui的el-tabs組件導(dǎo)致瀏覽器崩潰卡死問題
這篇文章主要介紹了vue2項(xiàng)目使用element-ui的el-tabs組件導(dǎo)致瀏覽器崩潰卡死問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
如何在Vue3中正確使用ElementPlus,親測(cè)有效,避坑
這篇文章主要介紹了如何在Vue3中正確使用ElementPlus,親測(cè)有效,避坑!具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
element 結(jié)合vue 在表單驗(yàn)證時(shí)有值卻提示錯(cuò)誤的解決辦法
這篇文章主要介紹了element 結(jié)合vue 在表單驗(yàn)證下,有值卻提示錯(cuò)誤的解決辦法,需要的朋友可以參考下2018-01-01
Vue前端導(dǎo)出Excel文件的詳細(xì)實(shí)現(xiàn)方案
在開發(fā)后臺(tái)管理系統(tǒng)的時(shí)候,很多地方都要用到導(dǎo)出excel表格,比如將table中的數(shù)據(jù)導(dǎo)出到本地,下面這篇文章主要給大家介紹了關(guān)于Vue導(dǎo)出Excel文件的相關(guān)資料,需要的朋友可以參考下2021-09-09
Vue導(dǎo)入Echarts實(shí)現(xiàn)散點(diǎn)圖
這篇文章主要為大家詳細(xì)介紹了Vue導(dǎo)入Echarts實(shí)現(xiàn)散點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-12-12
vue實(shí)現(xiàn)側(cè)邊欄導(dǎo)航效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)側(cè)邊欄導(dǎo)航效果,右側(cè)顯示對(duì)應(yīng)內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
vue實(shí)現(xiàn)一個(gè)單文件組件的完整過(guò)程記錄
整個(gè)項(xiàng)目結(jié)構(gòu)清晰,尤其單文件組件的表現(xiàn)力尤為突出,使得每個(gè)組件的邏輯都沒有過(guò)于復(fù)雜,所以這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)一個(gè)單文件組件的相關(guān)資料,需要的朋友可以參考下2021-06-06

