ExtJS的4.0.7加载完成TreePanel中(ExtJS 4.0.7 Load complet

2019-09-21 21:43发布

我在与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']
});

当加入这种配置的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,
}

通过打开一个节点,ExtJS的总是通过AJAX请求它​​,而不是显示的预加载数据加载从它的根节点到子节点的整个树。 我怎样才能做到,它通过打开“OS”加载“主机名”节点?

Answer 1:

你绝对可以做到这一点。 但是,似乎是您的JSON的问题。

您的JSON的根源是data ,但为了嵌套数据正确加载,你的根和所有儿童性需要是相同的。 既然你已经确定你的读者的根作为data ,则应更换所有children在你的JSON来data

请看看这个问题 ,如果你看中的是更深的认识也都在看这个问题 。 您也可以看看这个工作的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":[

                    ]
                 }
              ]
           }
        ]
     }
  ]
}


文章来源: ExtJS 4.0.7 Load complete TreePanel