今天遇到一個問題,做報告需要選擇一個團隊負責人,用zTree做展示。但是隻能選擇員工,而不能選擇部門,所以需要判斷當前點擊節點是否爲員工節點,而非部門節點。
此情況的特殊性在於:當部門員工爲空時,部門節點不是父節點,但是不應該被選擇。所以不應該用是否爲父節點來判斷,而是用level(根節點 level = 0,依次遞增)
來判斷。
解決:
function getSelected() {
var nodes = zTree.getSelectedNodes();
//不能點擊部門,只能選擇員工
if (nodes[0].level == 0) {
alert("請選擇員工!");
return;
}
//其它邏輯處理
}
能否用
isParent
來判斷,答案是不能。因爲當部門下沒有員工時,此節點雖然不是父節點(沒有員工子節點),但是不應該被選擇。能否用
.children.length
來判斷,能,比較麻煩。因爲.children
屬性只有包含子節點的時候纔有,否則是undefined
//獲得點擊節點
function getSelected() {
var nodes = zTree.getSelectedNodes();
console.log(nodes)
}
當所選節點有子節點時:nodes[i]
有一個屬性children
,是一個子節點數組,使用nodes[0].children.length
可以獲取點擊節點的子節點個數。
當所選節點無子節點時:nodes[I]
沒有children
屬性,這是直接用nodes[0].children.length
必然報錯,因爲nodes[0].children
是undefined
。