恐怕真的沒有辦法做到這一點。當您檢測到過濾器非空(或超過某個閾值)時,您可以做的最好的方法是展開整個樹(使用expandRecursive
)。通過完全擴展樹,您可以憑藉ivhTreeview隱藏其他所有內容的事實來顯示「過濾的節點」。這是很容易的部分。難的部分是當不再有過濾器時,如何將樹恢復到之前的部分擴展狀態。
如果我不得不這樣做,我可能會最終走在樹上,在遞歸擴展之前從每個節點抓取擴展狀態,然後在刪除過濾器時恢復該狀態。這會在遊戲中出現過濾器的情況下破壞/展開行動...您也可以處理這些行爲,但事情會很快發生。例如: -
var isExpanded = ivhTreeviewOpts().expandedAttribute
// When the filter becomes non-empty
ivhTreeviewBfs(myTree, function(node) {
node.savedExpandedState = n[isExpanded]
})
ivhTreeviewMgr.expandRecursive(tree)
// When the filter becomes empty
ivhTreeviewBfs(myTree, function(node) {
node[isexpanded] = node.savedExpandedState
})
這裏有一個粗略的演示:http://jsbin.com/jijoma/3/edit?html,js,output
希望幫助!
@jtrussell,根據您的要求,在這裏標記你。 – icfantv