and*_*red 4 javascript extjs extjs4 extjs-mvc
我在使用ExtJS 4.0.7 TreePanel时遇到了麻烦.我想从JSON请求加载完整的树.请求返回以下内容:
{
"data": {
"children": [
{
"text": "OS",
"leaf": false,
"children": [
{
"text": "Hostname",
"leaf": false,
"children": [
{
"text": "hostname.int.com",
"leaf": true,
"children": []
}
]
}
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
使用它不适用于以下商店配置(或任何其他我尝试过)
Ext.define('My.store.SysInfo', {
extend: 'Ext.data.TreeStore',
model: 'My.model.SysInfo',
proxy : {
type : 'ajax',
url : '/sysinfo/getSysInfo.php',
reader : {
root : 'data'
}
}
});
Run Code Online (Sandbox Code Playgroud)
该模型具有以下代码:
Ext.define('My.model.SysInfo', {
extend: 'Ext.data.Model',
fields: ['text']
});
Run Code Online (Sandbox Code Playgroud)
使用此配置添加treepanel时,它不起作用:
{
xtype: 'treepanel',
name : 'sysinfo',
height: '100%',
store: 'My.store.SysInfo',
lines: true,
autoScroll : true,
expanded : true,
rootVisible: false,
folderSort: true,
multiSelect: false,
useArrows: true,
}
Run Code Online (Sandbox Code Playgroud)
通过打开一个节点,ExtJS总是通过ajax请求整个树从它的根节点到子节点,而不是显示预加载的数据.我如何实现,它通过打开"操作系统"加载"主机名"节点?
你绝对可以做到这一点.但是你的json似乎存在问题.
您的json的根目录是data,但为了正确加载嵌套数据,您的根和所有子属性必须相同.既然您已将读者的根定义为data,则应将childrenjson中的all替换为data.
请看这个问题,如果你想更深入地了解它,所有人也会看到这个问题.你也可以看看这个工作的JsFiddle.
如果你这样定义你的读者:
reader : {
type: 'json',
// root : 'children' // no real need for this a children is the default.
}
Run Code Online (Sandbox Code Playgroud)
这个json应该正确加载:
{
"children":[
{
"text":"OS",
"leaf":false,
"children":[
{
"text":"Hostname",
"leaf":false,
"children":[
{
"text":"hostname.int.com",
"leaf":true,
"children":[
]
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2731 次 |
| 最近记录: |