0

我希望能够从同一个 json 维护不同的商店,其中每个商店的模型都是相同的。每个商店都需要根据其根属性分配进行更新。请参阅下面的示例 json、商店和模型,在这种情况下,每个商店都将根据 json 的根属性值(类别 1、类别 2 等)进行更新。目标是能够将我的应用程序中的嵌套列表动态绑定到不同的商店,而不是调用 setProxy 来更改单个商店的 url 设置。此外,json 需要采用这种格式。感谢您的帮助,如果我可以提供澄清或回答任何问题,请告诉我。

杰森:

{
    "items": [
        {
            "name": "category 1",
            "status": "",
            "displaytext": "",
            "items": [
                {
                    "name": "",
                    "status": "",
                    "displaytext": "",
                    "items": [
                        {
                            "name": "",
                            "status": "",
                            "displaytext": "",
                            "items": [
                                {
                                    "name": "",
                                    "status": "",
                                    "displaytext": "",
                                    "leaf": true
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "category 2",
            "status": "",
            "displaytext": "",
            "items": [
                {
                    "name": "",
                    "status": "",
                    "displaytext": "",
                    "items": [
                        {
                            "name": "",
                            "status": "",
                            "displaytext": "",
                            "leaf": true
                        }
                    ]
                }
            ]
        },
        {
            "name": "cateory 3",
            "status": "",
            "displaytext": "",
            "items": []
        },
        {
            "name": "category 4",
            "status": "",
            "displaytext": "",
            "items": []
        }
    ]
}

模型:

Ext.define('MyApp.model.myModel', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            {
                name: 'name',
                type: 'string'
            },
            {
                name: 'status',
                type: 'string'
            },
            {
                name: 'displaytext',
                type: 'string'
            }
        ]
    }
});

存储 1、2、3 等:

Ext.define('MyApp.store.storeCategory1', {
    extend: 'Ext.data.TreeStore',
    requires: [
        'MyApp.model.myModel'
    ],

    config: {
        model: 'MyApp.model.myModel',
        storeId: 'myStore',
        autoLoad: false,
        proxy: {
            type: 'ajax',
            url: '/path/to/file.json',
            reader: {
                type: 'json',
                rootProperty: 'items'
            }
        }
    }
});
4

1 回答 1

0

我认为您最好的选择是独立于商店的代理发出服务器请求。成功后,根据需要将数据拆分到不同的存储中。以这种方式预处理数据很好,尤其是当您需要将一个大型数据响应拆分为多个数据存储时。例如:

Ext.Ajax.request({
    url: 'path/to/file.json',
    success: function(response){
        // process server response here
        var json = Ext.decode(response.responseText);
        for(var i=0, l=json.items.length, i<l; i++){
            // start distributing the data to your different stores here
        }
    }
});

希望这可以帮助。

于 2012-10-15T18:57:50.317 回答