Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何用平面JSON填充树?_Extjs_Extjs5 - Fatal编程技术网

Extjs 如何用平面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

我从一个具有以下对象结构的API接收到JSON响应:

{
    "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}
,但是树当时没有呈现。