是否有一种扩展/关闭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);
答案 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