Dojo 展开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

有没有一种好方法可以扩展/关闭dijit.Tree中的所有可扩展节点

对于那些寻找答案的人,请在初始化代码中输入以下内容:

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();