dijit.tree 如何使用仅存储实现折叠所有功能



我有一个延迟加载dijit.tree,我想在加载数据后在许多地方重用它。但是,如果我只是将其他树中的存储对象替换为包含最多数据的树,则节点都会扩展。我想修改商店,以便在将其设置为新树中的商店之前折叠所有项目。你能告诉我如何实现这一目标吗?

您不能将存储用于此目的,因为它不包含树节点状态的任何信息。这个"魔术"是通过TreeNode执行的,请参阅此处的一些示例

"完美的解决方案"是找出需要扩展的路径,然后设置树的路径以遍历到所需的树节点。

但是,由于您的延迟加载,您需要检查state - 在初始化树时,它应该UNCHECKED .但是,内置的cookie功能可能正在启动,请确保使用{ persist:false }创建新的树

你也可以扩展你的树,这样它就会接受collapseChildren(TreeNode)如下 - 然后调用tree.set("path", [pathsArray]);

collapseChildren : function(top) {
        var self = this;
        if(!top || !self.model.mayHaveChildren(top.item)) return;
        top.getChildren().forEach(function(n) {
                if(n.item.children) {
                        //dojo.style(n.getParent().containerNode, { overflowY: 'hidden', overflowX: 'hidden'});
                        self._collapseNode(n);
                        self.collapseChildren(n);
                }
        });
},

编辑:

如果将自动扩展标志传递给构造函数,则最初会显示树,并展开所有节点。

然后,您可以调用 collapseAll() 和 expandAll() 来分别折叠和展开树。http://livedocs.dojotoolkit.org/dijit/Tree-examples#id3

相关内容

  • 没有找到相关文章

最新更新