ExtJs - TreePanel 的扩展路径不起作用
Posted
技术标签:
【中文标题】ExtJs - TreePanel 的扩展路径不起作用【英文标题】:ExtJs - expandPath of TreePanel not working 【发布时间】:2012-08-31 09:19:07 【问题描述】:我的 Treepanel 具有 id 'treePanel' 并且工作正常。
示例路径:
/subfolder3/abc
使用expandAll()
扩展所有内容适用于树形面板,但expandPath()
不起作用。
现在,在某些事件之后,我想在我的树中扩展一条路径。但是我做不到。
到目前为止我已经尝试过:
var oTreePanel = Ext.getCmp('treePanel');
oTreePanel.expandPath('/subfolder3/abc'); // or '/subfolder3' or '/root/subfolder3'
没有错误消息,但树中也没有变化。
怎么办?
编辑
oTreePanel.selModel.getSelection()[0].getPath()
是 /root/
。
我尝试了什么:
路径:/root
=> success
是 true
和 node
表示 node.data.id=""
和 node.data.path=""
路径:/root/
=> success
是 true
和 node
表示 node.data.id=""
和 node.data.path="/report_with_variables"
(树中的第一个节点)和 node.data.parentId= "root"
路径:/root/subfolder3
到路径:success
是 false
和 node
表示 node.data.id=""
和 node.data.path=""
和 node.getPath()
是 /root
我对树的 Json 响应如下所示:
"status":"status":0,"msg":"Ok","protocolversion":"extjs.json","value":"name":"","path":"\/","type":"folder","leaf":false,"children":["name":"report_with_variables","path":"\/report_with_variables","type":"report","leaf":true,"title":"Report ohne Variablen","description":null,"name":"subfolder1","path":"\/subfolder1","type":"folder","leaf":false,"name":"subfolder2","path":"\/subfolder2","type":"folder","leaf":false,"name":"subfolder3","path":"\/subfolder3","type":"folder","leaf":false,"name":"testreports","path":"\/testreports","type":"folder","leaf":false]
【问题讨论】:
【参考方案1】:expandPath
工作正常,尝试验证您尝试扩展的路径。
该路径默认构建在节点的模型idProperty
字段上,它是模型数据中的id
属性,可能与您在示例中尝试使用的不同。
-
验证路径和节点ID
尝试按以下格式运行expandPath:
tree.expandPath(path, null, null, function(success, node)
//analyse method execution
);
所以你可以分析回调函数中发生了什么:
如果成功为假且节点为空,则路径为空
如果成功为假且节点=根节点,则路径一开始就无效
如果成功为假且节点不是根,则路径部分无效
尝试使用getPath()
方法获取树中某个节点的路径,然后使用expandPath
获取路径:
var n = node.getPath();
tree.expandPath(path);
它应该可以工作
【讨论】:
问题是Model没有id,你可以给Model加上id字段,然后从服务器端返回,或者比如把Model的id设置成path字段(不好,可以有具有相同名称的文件夹/文件,但对于测试用例,您可以尝试):idProperty: 'path'
在树的存储模型中。这是因为默认情况下,如果未指定 idProperty
配置选项,则使用模型 id
名称
我在模型中尝试了 idProperty 方法,但树没有被加载。抱歉,我没有让它工作。
试试简单的例子jsfiddle.net/nbabinski/PF4Lu/1 它会创建一棵树(我只是从 ext 示例中获取)并在一秒钟内展开一个节点。打开控制台查看节点的路径。也许从你那里得到代码 sn-p 会更容易解决问题。在上面的示例中,它没有在商店中使用模型,但在您的代码中,我认为您正在使用一个。同样在编辑部分,您尝试了根据您的 json 数据和默认 expandPath 功能不正确的路径,因为它尝试使用它们的 'id' 字段扩展节点。
感谢您的帮助。问题是路径和id【参考方案2】:
我遇到了同样的问题,在我的情况下,expandPath 的回调从未被调用过。
原因是在调用 expandPath 方法时,树状存储仍在加载先前的请求。在调用 expandPath 之前,确保您的 tree.store 没有加载。
也许这对您和/或其他人有帮助。
【讨论】:
以上是关于ExtJs - TreePanel 的扩展路径不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ExtJs基础知识总结:DomIFrame和TreePanel
Extjs TreeStore,多个异步请求,treepanel渲染错位