如何从ExtJs中的现有商店对象中获取商店对象

问题描述:

我正在使用ExjJs 4.2。我有两个显示不同数据的网格。在一个JavaScript文件中,我必须包含这两个网格。我加载商店的第一网格状如何从ExtJs中的现有商店对象中获取商店对象

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举报” ,“startDate”:“2013-04-30”,“endDate”:“2013-05-02”}]},“details”:[{“id”:14,“document”:“docpath12345”,“date “:”2013-04-28“}]

实际上,第一个网格将只显示JSON的'data'部分,第二个网格将显示JSON的'details'部分。所以理想情况下,我不应该为第二个网格再次加载商店对象(我现在在做什么)。我想申报一个商店类型变量并重用'store'(商店的'documents'部分)的值以成为对于第二格栅店作为

我加载所述第二存储截至目前这样

变种商店2 = 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'], 
       }, 
      });`. 

在这两种情况下,我都会调用相同的动作并获得相同的JSON。

任何人都可以帮助我在这里,我怎么能声明另一个商店对象,并从现有的'商店'的价值,使我不应该加载相同的数据2次。

Regards:Dev

您可以使第一个商店的自动加载设置为false。然后在第二家店使用load事件记录注入到第一个使用存储活动代理数据:

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); 
      } 
     } 
    } 
}); 
+0

2fast4me;)无论如何,这就是答案1 – sra 2013-05-07 13:31:35

+0

感谢Reimius为help..This工作完美吨他的方式我想... – Deba 2013-05-08 08:07:54

我要换:

listeners: { 
    load: function(store, records, successful, eOpts){ 
     if(successful) 
     { 
      store1.loadData(**store.getRange()**); 
     } 
    } 
} 

这是一样的,我认为:

store.proxy.reader.rawData.data < - > store.getRange()

+0

不一样...这将有两个商店有相同的数据集。 – Reimius 2013-05-08 16:44:58

+0

是的,对不起,我没有读到他只想要一小部分数据..这是我的错 - – mfruizs2 2013-05-10 07:19:40