前言
一雾鬼、在v-if中使用
在使用Tree組件時(shí),需求是可以動(dòng)態(tài)切換全部展開和全部折疊的功能屠阻,尋找到了解決方案红省,但是屢次沒(méi)有成功,這時(shí)国觉,我一直懷疑這個(gè)方案的可行性吧恃,以為是這個(gè)方案有問(wèn)題,最終才知道麻诀,其實(shí)是因?yàn)槲业腡ree是在Element-UI的Dialog組件中使用的緣故蚜枢,詳見問(wèn)題原因,也就是說(shuō)是因?yàn)橥鈱咏M件Dialog使用了v-if
的原因针饥,以致獲取不到$refs的緣故厂抽,如下圖所示,是Dialog的源碼:
如圖所示丁眼,確實(shí)是使用了v-if
筷凤,而v-show
和v-if
的區(qū)別,可以看這篇文章VUE中的v-if與v-show
實(shí)現(xiàn)代碼:
// tree為Tree組件的ref值,isexpand為true或false
this.$nextTick(() => {
for(var i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
this.$refs.tree.store._getAllNodes()[i].expanded=this.isexpand;
}
});
二藐守、在v-for中使用
在v-for
中使用Tree組件時(shí)挪丢,就會(huì)發(fā)現(xiàn)this.$refs.tree
顯示報(bào)錯(cuò),并沒(méi)有獲取到卢厂。這是因?yàn)椋?br>
所以乾蓬,要想在
v-for
中正確獲取到this.$refs.tree
,需將其改為this.$refs.tree[0]
慎恒。