是否有一种很好的方式来展开/关闭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