Sencha touch Sencha Touch使用相同的Json维护不同的商店

Sencha touch Sencha Touch使用相同的Json维护不同的商店,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我希望能够从相同的json维护不同的存储,其中每个存储的模型都是相同的。每个存储都需要根据其根属性分配进行更新。请参阅下面的示例json、存储和模型,在这种情况下,每个存储都将根据json的根属性值(类别1、类别2等)进行更新。目标是能够动态地将应用程序中的嵌套列表绑定到不同的存储,而不是调用setProxy来更改单个存储上的url设置。此外,json需要采用这种格式。谢谢你的帮助,请让我知道如果我可以提供澄清或回答任何问题 Json: 型号: Ext.define('MyApp.model.m

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

Json:

型号:

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'
            }
        }
    }
});

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

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
        }
    }
});
Ext.Ajax.request({
url:'path/to/file.json',
成功:功能(响应){
//此处处理服务器响应
var json=Ext.decode(response.responseText);
对于(var i=0,l=json.items.length,i
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
        }
    }
});