如何从ExtJs中的现有存储对象获取存储对象

如何从ExtJs中的现有存储对象获取存储对象,extjs,extjs4.1,extjs4.2,Extjs,Extjs4.1,Extjs4.2,我使用的是ExjJS4.2。我有两个网格显示不同的数据。在一个javascript文件中,我必须包含两个网格。我正在为第一个网格加载存储 var store = Ext.create('Ext.data.Store', { model: 'Writer.Person', autoLoad: true, proxy: { type: 'ajax',

我使用的是ExjJS4.2。我有两个网格显示不同的数据。在一个javascript文件中,我必须包含两个网格。我正在为第一个网格加载存储

var store = Ext.create('Ext.data.Store', {
                model: 'Writer.Person',
                autoLoad: true,
                proxy: {
                    type: 'ajax',            
                    url : 'findPatientRecordAction',
                    reader: {
                        type: 'json',
                        successProperty: 'success',
                        root: 'data',
                        messageProperty: 'message'
                    },
                    writer: {
                        type: 'json',
                        encode: true,
                        root: 'data'
                    },
                    fields: ['id','notes', 'startDate', 'endDate'],
                },
            });
JSON对象存储如下所示:

“数据”:[{“id”:35,“注释”:“hiii”,“起始日期”:“2013-04-30”,“结束日期”:“2013-05-02”}],“详细信息”:[{“id”:14,“文件”:“docpath12345”,“日期”:“2013-04-28”}]

实际上,第一个网格将只显示JSON的“数据”部分,第二个网格将显示JSON的“细节”部分。因此,理想情况下,我不应该为第二个网格(我现在正在做的事情)再次加载store对象。我想声明一个更多的store类型变量,并重用'store'的值(store的'documents'部分)作为第二个网格的store

我现在正在加载第二个商店,就像这样

var store2=Ext.create('Ext.data.Store'{

在这两种情况下,我调用相同的操作并得到相同的JSON

有人能帮我吗?我如何声明另一个store对象并从现有的“store”中获取值,这样我就不必加载相同的数据两次了


注意:Dev

您可以将第一个存储的“自动加载”设置为false。然后在第二个存储中,使用加载事件将记录注入第一个存储活动代理数据的存储中:

var store2 = Ext.create('Ext.data.Store', {
    model: 'Writer.Document',
    autoLoad: true,
    proxy: {
        type: 'ajax',            
        url : 'findPatientRecordAction',
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'details',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            encode: true,
            root: 'details'
        },
        fields: ['id','document', 'date'],
    },
    listeners: {
        load: function(store, records, successful, eOpts){
            if(successful)
            {
                store1.loadData(store.proxy.reader.rawData.data);
            }
        }
    }
});

您可以将第一个存储的“自动加载”设置为false。然后在第二个存储中,使用加载事件将记录注入第一个存储活动代理数据的存储中:

var store2 = Ext.create('Ext.data.Store', {
    model: 'Writer.Document',
    autoLoad: true,
    proxy: {
        type: 'ajax',            
        url : 'findPatientRecordAction',
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'details',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            encode: true,
            root: 'details'
        },
        fields: ['id','document', 'date'],
    },
    listeners: {
        load: function(store, records, successful, eOpts){
            if(successful)
            {
                store1.loadData(store.proxy.reader.rawData.data);
            }
        }
    }
});
我将替换:

listeners: {
    load: function(store, records, successful, eOpts){
        if(successful)
        {
            store1.loadData(**store.getRange()**);
        }
    }
}
这是一样的,我认为:

store.proxy.reader.rawData.data store.getRange()

我将替换:

listeners: {
    load: function(store, records, successful, eOpts){
        if(successful)
        {
            store1.loadData(**store.getRange()**);
        }
    }
}
这是一样的,我认为:


store.proxy.reader.rawData.data store.getRange()

2fast4me;)无论如何,这是答案+12fast4me;)无论如何,这是答案+1不一样…这两个存储都有相同的数据集。是的,对不起,我没有读到他只需要一小部分数据。这是我的错不一样…这两个存储都有相同的数据集。是的,对不起,我没有读到他只需要一小部分数据这是我的错-