1

我想将 JSON 文件加载到 TreeStore 以在 TreePanel 中使用。如果我对树进行硬编码,我可以加载带有值的商店并显示它,但是当我尝试从 JSON 文件加载它时,它不会在树中显示任何内容。这是我的代码:

JSON 文件:exampleDoc.json

{
    "success": true, 
    "Root": [{
        "name": "Bookmark 1",
        "leaf": true,
        "element": "1"
    }, {
        "name":"Bookmark 2",
        "leaf": true,
        "element": "2"
    }, {
        "name":"Bookmark 3",
        "leaf": true,
        "element": "3"
    }]
}

这是我的模型

Ext.define('bkmark', {
    model: 'Ext.data.Model',
    fields: ['name', 'element']
});

这是我的树店

var store = Ext.create('Ext.data.TreeStore', {
    model: 'bkmark',
    proxy: {
        type: 'ajax',
        url: 'exampleDoc.json',
        reader: {
            type: 'json'
        }
    }
});

这是我的树面板

var treePanel = Ext.create('Ext.tree.Panel', {
    title: 'Bookmarking',
    width: 225,
    height: 150,
    store: store,
    rootVisible: false,
    region: 'west',
    collapsible: true,
});

提前致谢!

4

1 回答 1

5

代理reader有一个名为 的配置root,它定义了当您拥有顶级字段(如success.

由于您的数据在 下"Root",您应该像这样定义您的阅读器:

reader: {
    type: 'json',
    root: 'Root'
}

或者,您可以使用默认值root,即data. 因此,在您的 json 中更改"Root""data".

顺便说一句,定义模型的标准方法是:

Ext.define('bkmark', {
    extend: 'Ext.data.Model',
    fields : ['name', 'element']
});
于 2012-11-27T23:18:22.537 回答