2015-09-07 42 views
2

我正在使用dojo 1.10.4,並注意到dijit.tree getChildren()函數僅返回展開(顯示和可見)的子節點(樹)節點dijit.tree。如何循環遍歷所有的dijit.tree樹節點,而不管它們是否顯示和可見?dojo dijit.tree getChildren()不返回所有樹節點

  • 我可以輕鬆地遍歷所有底層的數據存儲元素,但我試圖找到特定的樹節點,以便我可以使用「node.labelNode.style」來設置它們的樣式。
  • 我可以在調用getChildren()之前以編程方式展開所有dijit.tree節點,但我希望保留用戶對dijit.tree的視圖。

任何建議,非常感謝。

回答

1

我不確定這是否是你以後的樣子,但這就是我們如何擴展所有節點,類似於您的任務,從樹中獲取所有節點。我相信,一個簡單的修改,你就能實現你的任務

假設我們有一個功能,擴大樹節點,我們要調用

this._expandTree(this._tree.rootNode); 

和功能本身

_expandTree: function (node) { 
       if (node.hasChildren()) { 
        var currentNode; 
        for (var i = 0; i < node.getChildren().length; i++) { 
         currentNode = node.getChildren()[i];        
         this._expandTree(currentNode); 
        } 
       } 
      }, 
+0

感謝您的回覆,但問題是,我想通過所有的dijit.tree節點進行搜索,而不管它們是否展開而不展開樹節點,以便我可以保留用戶對dijit.tree – railser

+0

的看法,即它做了什麼......這個廁所ps通過整棵樹,我告訴你修改它的名字,並做你需要做的任何事情。 「expandTree」只是我們函數的名稱,它循環遍歷所有節點。 – belzebu

+0

謝謝。沒有意識到這就是代碼所做的事情。感謝幫助! – railser