ExtJs 4.2:TreePanel 递归根节点加载而不是子节点
Posted
技术标签:
【中文标题】ExtJs 4.2:TreePanel 递归根节点加载而不是子节点【英文标题】:ExtJs 4.2: TreePanel recursive root node load instead of children 【发布时间】:2014-01-31 15:42:42 【问题描述】:使用 ExtJs v4.2.1(试用版)我无法从 JSON 文件构建完整的 treePanel。每次展开/折叠子节点时,都会向服务器发出请求,该请求以相同的 JSON 响应,从而复制根节点。 首先,我需要从 JSON 文件中解释 rood 节点,而不是在存储中硬编码,其次,ajax 请求只是读取 JSON 文件来模拟服务器响应。
所以在谷歌上搜索了很多阅读问答之后,这里是What I've Tried:
检查了所有节点的叶子=true/false (see) 存储中的硬编码根节点 向节点添加了 loaded=true (see) 向代理添加了一个读取器以指向 JSON 响应中的根节点 (see) 玩弄了 rootVisible=bool 还有更多...如何在这个版本的 ExtJs (v4.2.1) 中从 JSON 加载包含子节点的树?
【问题讨论】:
【参考方案1】:我不想绑定到一个事件并做一个解决方法,这必须在没有任何自定义函数或覆盖的情况下工作(有很多解决方法建议这样做)。
所以这对我有用:
查看/Menus.js:
Ext.define('ExtApp.view.Menus',
extend : 'Ext.tree.Panel',
alias : 'widget.Menus',
store : 'Menus',
rootVisible : false,
autoScroll : true,
xtype : 'Menus',
viewConfig :
plugins : ptype: 'treeviewdragdrop'
,
useArrows : true,
);
商店/Menus.js:
Ext.define('ExtApp.store.Menus',
extend : 'Ext.data.TreeStore',
proxy :
type : 'ajax',
url : 'path/to/file.json'
,
root :
expanded: true
);
file.json(. 不会在树中加载/可见):
text : '.',
children: [
text :'m0',
id :'m0',
leaf :true
,
text :'m1',
expanded: true,
id :'m1',
children:[
text :'m11',
id :'m11',
leaf :false,
children:[
text :'m111',
id :'m111',
leaf :true
]
,
text :'m12',
id :'m12',
leaf :false,
children:[
text :'m121',
id :'m121',
leaf :true
]
,
text :'m13',
id :'m13',
leaf :true
,
text :'m14',
id :'m14',
leaf :true
]
,
text :'m2',
children:[
text :'m21',
id :'m21',
leaf :true
]
]
希望这对其他人有所帮助,因为我看到了很多关于树面板类似问题的问题。
【讨论】:
如果你有一个错误“config.init is undefined”,treeviewdragdrop插件没有加载它需要的所有东西,所以你需要手动要求它们,见sencha.com/forum/…以上是关于ExtJs 4.2:TreePanel 递归根节点加载而不是子节点的主要内容,如果未能解决你的问题,请参考以下文章
ExtJS - 将 Treepanel 节点向上/向下移动代码
Javascript - ExtJs - TreePanel组件
在 ExtJs 4.0 TreePanel 中更改文件夹和叶子节点的顺序