Extension of all nodes in dijit.Tree

Is there a good way to expand / close all expandable nodes in dijit.Tree ?

For those looking for an answer, put this in your initialization code:

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

At least it works for me. And you can do the same with collapseAll() , where you only need to switch _this._expandNode(node); on _this._collapseNode(node);

+4
source share
3 answers

Yes, autoExpand = true (as an initialization parameter for the tree).

If you need to dynamically expand / collapse, Tree used a method for this, but I took it. However, you can copy it from: http://bugs.dojotoolkit.org/changeset/20529 .

+8
source

To collapse all nodes ... (remember to NOT collapse the root of the node when it is not displayed (I like to have several elements displayed for my trees))

 _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
source

You can use the following methods in a dijit/Tree instance:

 tree.expandAll(); 

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

or

 tree.collapseAll(); 

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

+1
source

Source: https://habr.com/ru/post/1299723/


All Articles