扩展dijit.Tree中的所有节点

时间:2010-01-29 09:40:03

标签: dojo

是否有一种扩展/关闭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()执行相同操作,只需将_this._expandNode(node);切换为_this._collapseNode(node);

3 个答案:

答案 0 :(得分:8)

是,autoExpand = true(作为树的初始化参数)。

如果你需要动态展开/折叠,Tree过去常常有一个方法,但我把它拿出来了。但是,您可以从http://bugs.dojotoolkit.org/changeset/20529复制它。

答案 1 :(得分:2)

要折叠所有节点...(记住不折叠根节点未显示时(我喜欢为我的树显示多个项目))

_collapseAllTreeNodeContainers: function(){ 

     var _tree = _this; 

        function collapse(node) {
   // never collapse root node, otherwise hides whole tree !
   if ( _tree.showRoot == false && node != _tree.rootNode ) {
    _tree._collapseNode(node);
   }

            var childBranches = dojo.filter(node.getChildren() || [], function(node) {
                return node.isExpandable;
            });

            var def = new dojo.Deferred();
            defs = dojo.map(childBranches, collapse);
        }
        return collapse( _tree.rootNode);
    }

答案 2 :(得分:1)

您可以在dijit/Tree实例上使用以下方法:

tree.expandAll();

http://dojotoolkit.org/api/?qs=1.10/dijit/Tree#1_10dijit_Tree_expandAll

tree.collapseAll();

http://dojotoolkit.org/api/?qs=1.10/dijit/Tree#1_10dijit_Tree_collapseAll