2016-03-16 23 views
0

根據討論here,當樹被過濾並且葉節點與過濾器匹配時,當前ivh-treeview Angular庫不展開摺疊的節點。在ivh-treeview中展開過濾節點的正確方法是什麼?

實現此行爲的正確方法是將ng-change處理程序添加到用於篩選文本的input元素,然後查詢包含控制器中的樹(因此,手動執行)?

似乎沒有任何其他機制來檢測過濾器是否發生了變化。

順便說一句,不存在ivh-treeview標記,所以我不能真正標記這個正確。道歉,如果我劫持了別人的標籤。這表示它似乎是用於其他ivh-treeview相關問題的標籤。

+0

@jtrussell,根據您的要求,在這裏標記你。 – icfantv

回答

1

恐怕真的沒有辦法做到這一點。當您檢測到過濾器非空(或超過某個閾值)時,您可以做的最好的方法是展開整個樹(使用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

希望幫助!

+0

國家問題是我與我的技術主管討論的問題,因爲我們需要自行管理 - 我並不十分激動。聽起來這可能不值得實施。感謝您的迴應。 – icfantv

相關問題