1

TreePanelで使用するためにJSONファイルをTreeStoreにロードしたいと思います。ストアに値をロードして、ツリーをハードコーディングすると表示されるようにすることはできますが、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 に答える