Extjs 如何用平面JSON填充树?
我从一个具有以下对象结构的API接收到JSON响应:Extjs 如何用平面JSON填充树?,extjs,extjs5,Extjs,Extjs5,我从一个具有以下对象结构的API接收到JSON响应: { "servers": [ { "name": "Root Company Ltd.", "guid": "{1760F250-5012-46B2-8BBF-955FFD1C51AD}", "parentGuid": null, "active": true, "connected": true
{
"servers": [
{
"name": "Root Company Ltd.",
"guid": "{1760F250-5012-46B2-8BBF-955FFD1C51AD}",
"parentGuid": null,
"active": true,
"connected": true
},
{
"name": "25-Tecvoz HLV1WAD",
"guid": "{CC893441-A3B5-42B2-95B6-F3E56F0286AE}",
"parentGuid": "{1760F250-5012-46B2-8BBF-955FFD1C51AD}",
"active": true,
"connected": true
},
{
"name": "20-Axis M1031",
"guid": "{216142B2-A9B8-4AFF-85CD-1D97685F4EE1}",
"parentGuid": "{1760F250-5012-46B2-8BBF-955FFD1C51AD}",
"active": true,
"connected": true
},
// ...
]
}
如您所见,JSON结构是“平面”的,对象的子对象不嵌套到它们的父对象,但在构建树面板时,设置了parentGuid
的对象应该嵌套到具有匹配guid
的对象
树也不需要是动态的,我的意思是,它不需要在每次打开节点时向服务器发出新的请求,因为这个JSON已经是来自服务器的完整信息集
我使用以下模型:
Ext.define('Web.model.Server', {
extend : 'Ext.data.Model',
requires: [
'Web.globals'
],
idProperty: 'guid',
// "fields" and "validators" skipped...
proxy: {
type: 'rest',
url: Web.globals.getAddress('/api/servers'),
appendId: false,
reader: {
type: 'json',
rootProperty: 'servers'
}
}
});
商店:
Ext.define('Web.store.Servers', {
/* URL /api/servers */
extend: 'Ext.data.TreeStore',
alias: 'store.servers',
model: 'Web.model.Server',
root: {expanded: true}
});
小组:
{
xtype : 'treepanel',
name : 'Servers',
title : 'Select the server',
flex : 1,
overflowY : 'scroll',
autoScroll : true,
margin : 5,
store : Ext.create('Web.store.Servers'),
rootVisible : false,
displayField: 'name',
autoLoad: true,
}
我怎样才能做到这一点?我在文档中找不到一个清晰的方法。@Evantimboli好的,似乎有效!但是,渲染完成后,仍然只有节点。如何将没有子节点的节点转换为叶子?我在模型的字段中添加了
{name:'leaf',type:'boolean',defaultValue:true}
,但树当时没有呈现。@EvanTrimboli好的,似乎可以!但是,渲染完成后,仍然只有节点。如何将没有子节点的节点转换为叶子?我在模型的字段中添加了{name:'leaf',type:'boolean',defaultValue:true}
,但树当时没有呈现。@EvanTrimboli好的,似乎可以!但是,渲染完成后,仍然只有节点。如何将没有子节点的节点转换为叶子?我在模型的字段中添加了{name:'leaf',type:'boolean',defaultValue:true}
,但是树当时没有呈现。