Dojo 展开dijit.Tree中的所有节点
有没有一种好方法可以扩展/关闭dijit.Tree中的所有可扩展节点 对于那些寻找答案的人,请在初始化代码中输入以下内容:Dojo 展开dijit.Tree中的所有节点,dojo,Dojo,有没有一种好方法可以扩展/关闭dijit.Tree中的所有可扩展节点 对于那些寻找答案的人,请在初始化代码中输入以下内容: var treeControl = new dijit.Tree({ model: treeModel, expandAll: function() { // summary: // Expand all nodes in the tree // returns: // Defe
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()
执行相同的操作,您只需切换\u this.\u expandNode(node)代码>与\u this.\u collapseNode(节点)代码>是,autoExpand=true(作为树的初始化参数)
若你们需要动态地展开/折叠,树过去有一个方法,但我把它去掉了。但是,您可以从以下位置复制它:。以折叠所有节点。。。(请记住,在未显示根节点时不要折叠它(我希望为我的树显示多个项目))
您可以在dijit/Tree
实例上使用以下方法:
tree.expandAll();
或
它被取出有什么原因吗?而且,它似乎无法初始化树。我们正在打包整个dojo库,因此我无法直接访问Tree.js文件本身。但是,我可以在创建新树时在其上创建其他方法,但是\u expandNode()
不存在。。。有什么建议吗?看来我在回调函数方面遇到了一些问题。我刚刚删除了它,并根据您发布的链接对expand()
和几乎相同的collapse()
进行了递归调用,现在它工作了。没有特别的原因,添加这两个方法会使代码膨胀并需要更多的测试(我认为我们还需要expandOnLoad标志),只是不清楚是否有人想要动态扩展/收缩。。。我想你是这样做的:-)如果你提交了一个增强票证(在),我会添加这些方法。它现在是API的一部分。不需要猴子修补。就用这些方法吧。
tree.expandAll();
tree.collapseAll();