gpt4 book ai didi

javascript - ExtJS 4.0.7 加载完整的 TreePanel

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:00 26 4
gpt4 key购买 nike

我在使用 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": []
}
]
}
]
}
]
}
}

它不适用于以下商店配置(或我尝试过的任何其他配置)

Ext.define('My.store.SysInfo', {
extend: 'Ext.data.TreeStore',
model: 'My.model.SysInfo',

proxy : {
type : 'ajax',
url : '/sysinfo/getSysInfo.php',
reader : {
root : 'data'
}
}
});

模型有以下代码:

Ext.define('My.model.SysInfo', {
extend: 'Ext.data.Model',
fields: ['text']
});

使用此配置添加树面板时,它不起作用:

{
xtype: 'treepanel',
name : 'sysinfo',
height: '100%',
store: 'My.store.SysInfo',
lines: true,
autoScroll : true,
expanded : true,
rootVisible: false,
folderSort: true,
multiSelect: false,
useArrows: true,
}

通过打开一个节点,ExtJS 总是通过 ajax 请求将整个树从它的根节点加载到子节点,而不是显示预加载的数据。我怎样才能通过打开“操作系统”来加载“主机名”节点?

最佳答案

你绝对可以做到。但是您的 json 似乎有问题。

您的 json 的根是 data,但为了正确加载嵌套数据,您的根和所有子属性需要相同。由于您已将阅读器的根定义为 data,因此您应该将 json 中的所有 children 替换为 data

请看this question ,如果您想更深入地了解它,还可以查看 this question .你也可以看看这个working JsFiddle .

如果你这样定义你的阅读器:

    reader : {
type: 'json',
// root : 'children' // no real need for this a children is the default.
}

此 json 应该正确加载:

{
"children":[
{
"text":"OS",
"leaf":false,
"children":[
{
"text":"Hostname",
"leaf":false,
"children":[
{
"text":"hostname.int.com",
"leaf":true,
"children":[

]
}
]
}
]
}
]
}

关于javascript - ExtJS 4.0.7 加载完整的 TreePanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com