2016-06-08 54 views
0

我的希望是在我的视图中获取呈现为树的JSON对象。我的代码是在一个名为/app/view/main/Tree.js文件从JSON抓取树

Ext.define('SGSS.view.main.Tree', {  
    extend: 'Ext.tree.Panel', 
    alias: 'viewmodel.tree', 
    xtype: 'SimpleTree', 
    width: 400, 
    height: 250, 
    store: { 
     root: { 
      expanded: true 
     }, 
     proxy: { 
      type: 'ajax', 
      url: '/cgi-bin/uiconnector', 
      reader: { 
       type: 'json', 
       rootProperty: 'assets' 
      } 
     } 
    } 
}); 

当我呼吁引用此页面中,我得到一个屏幕,看起来比预期的稍有不同:

enter image description here 这只是空白文件夹,将无限期地继续下去。不是我想到的JSON对象。任何想法我做错了什么?

我的JSON如下:

{ 
    "assets": { 
    "batteryzone": [ 
    { 
     "id": "10001", 
     "type": "batteryzone", 
     "label": "BZ1", 
     "parentid": "1001", 
     "model": "sim", 
     "alarmsev": "None", 
     "extant": "true", 
     "invertersonline": "0", 
     "hvaconline": "0", 
     "racksonline": "0", 
     "interfacerev": "0", 
     "plcrevision": "0", 
     "numbatteryracks": "20", 
     "dcvoltage": "0.0", 
     "dcpower": "0.0", 
     "averagesoc": "0.0", 
     "storedenergy": "0.0", 
     "startupsubstate": "0", 
     "startupsequence": "0", 
     "recoverymode": "false", 
     "tempmaxconnected": "-4.0", 
     "chargecapacity": "0", 
     "dischargecapacity": "0", 
     "dccurrent": "0.0", 
     "containerenabled": "false", 
     "hicell": "3.016", 
     "locell": "3.011", 
     "nameplateenergy": "1950", 
     "recoveryrunning": "false", 
     "currinputs": [] 
    }, 
    { 
     "id": "10002", 
     "type": "batteryzone", 
     "label": "BZ2", 
     "parentid": "1001", 
     "model": "sim", 
     "alarmsev": "None", 
     "extant": "true", 
     "invertersonline": "0", 
     "hvaconline": "0", 
     "racksonline": "0", 
     "interfacerev": "0", 
     "plcrevision": "0", 
     "numbatteryracks": "20", 
     "dcvoltage": "0.0", 
     "dcpower": "0.0", 
     "averagesoc": "0.0", 
     "storedenergy": "0.0", 
     "startupsubstate": "0", 
     "startupsequence": "0", 
     "recoverymode": "false", 
     "tempmaxconnected": "-4.0", 
     "chargecapacity": "0", 
     "dischargecapacity": "0", 
     "dccurrent": "0.0", 
     "containerenabled": "false", 
     "hicell": "3.016", 
     "locell": "3.011", 
     "nameplateenergy": "1950", 
     "recoveryrunning": "false", 
     "currinputs": [] 
     } 
    ] 
    } 
} 

我这么想吗? (我的意思是,显然我是!)

+0

我看到的第一个问题是,您的商店似乎不是定义为TreeStore,而是定义为标准(平面)商店。当我忘记将商店设为树木商店时,我不止一次地遇到了同样的无限期递归问题。 – Alexander

回答

1

您正在使用的JSON格式不是树面板形成树所需的正确树格式。所需的数据格式如下所示:

 { 
      expanded: true, 
      children: [{ 
       text: 'SFO  ✈  DFW', 
       duration: '6h 55m', 
       expanded: true, 
       children: [{ 
        text: 'SFO  ✈  PHX', 
        duration: '2h 04m', 
        leaf: true 
       }, { 
        text: 'PHX layover', 
        duration: '2h 36m', 
        isLayover: true, 
        leaf: true 
       }, { 
        text: 'PHX  ✈  DFW', 
        duration: '2h 15m', 
        leaf: true 
       }] 
      }] 
     } 

这里要指定的rootProperty是“孩子”在下面的部分中docs for the treestore如所陈述:

读嵌套数据

为了读取嵌套数据,Ext.data.reader.Reader必须为 ,并配置一个根属性,这样读者才能找到每个节点的嵌套数据 (如果未指定根目录它将默认为 'children')。这将告诉树使用相同的关键字,即'children'来查找任何嵌套树节点 。如果在 配置中指定了根目录,请确保任何具有子项的嵌套节点都具有相同的 名称。

还要注意的是叶:真已被用于表示该节点是树,即,节点不包含子节点的终端/叶节点。

有关数据格式的更多示例,可以参考API

+0

哇...所以这告诉我,ExtJS6 **不能**使用JSON吗?我必须以某种方式将这些值添加到JSON以使其可用? –

+0

是的数据需要格式化以适应树型数据结构。 –