是否有一種很好的方式來展開/關閉dijit.Tree
中的所有可展開節點?展開dijit中的所有節點。樹
對於那些尋找一個答案,把這個在您的初始化代碼:
var treeControl = new dijit.Tree({
model: treeModel,
expandAll: function() {
// summary:
// Expand all nodes in the tree
// returns:
// Deferred that fires when all nodes have expanded
var _this = this;
function expand(node) {
_this._expandNode(node);
var childBranches = dojo.filter(node.getChildren() || [], function(node) {
return node.isExpandable;
});
var def = new dojo.Deferred();
defs = dojo.map(childBranches, expand);
}
return expand(this.rootNode);
}
});
至少,這對我的作品。你可以用collapseAll()
來做同樣的事情,你只需要切換_this._expandNode(node);
與_this._collapseNode(node);
有它得到了取出的原因是什麼?而且,它似乎沒有用於初始化樹。我們打包了整個dojo庫,所以我沒有直接訪問Tree.js文件本身。但是,我可以在創建一個'新樹'時創建其他方法,但是'_expandNode()'不存在......任何建議? – peirix 2010-02-03 11:23:11
似乎我遇到了回調函數的一些問題。我只是刪除了它,並根據你發佈的鏈接對'expand()'和幾乎相同的'collapse()'進行了遞歸調用,現在它可以工作。 – peirix 2010-02-03 11:59:48
沒有特別的原因,添加這兩個方法會使代碼膨脹並且需要更多的測試(並且我認爲我們仍然需要expandOnLoad標誌),並且不清楚任何人想要動態擴展/收縮......我想你會這樣做:-) 如果您提交增強權證(http://bugs.dojotoolkit.org),我將在這些方法中添加這些方法。 – 2010-02-04 14:29:21