2013-05-07 2 views
0

Я использую 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 », а вторая сетка отобразит« детали »части JSON. Поэтому в идеале я не должен снова загружать объект хранилища для второй сетки (что я делаю сейчас). Я хочу объявить еще одну переменную типа хранилища и значение повторного использования «store» (часть документов) в хранилище, чтобы стать магазин для второй сетки в качестве

Я загружающего второй магазин как сейчас, как этот

вар 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'], 
       }, 
      });`. 

В обоих случаях я вызываю одно и то же действие и получаю тот же JSON.

Может ли кто-нибудь помочь мне здесь, как я могу объявить еще один объект магазина и получить значение из существующего «хранилища», так что мне не нужно будет загружать одни и те же данные в 2 раза.

С уважением: Dev

ответ

5

Вы можете сделать первый магазин у автозагрузки установлены неверно. Затем во втором магазине использовать событие загрузки, чтобы ввести записи в первом использовании, в котором хранится данные активного прокси:

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

+0

Спасибо Reimius для help..This работает отлично т он способ, которым я хотел ... – Deba

-1

Я заменю:

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

Это то же самое, я думаю:

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

+0

Не то же самое ... это имело бы оба магазина, имеющих тот же набор данных. – Reimius

+0

да, извините, я не читал, что ему нужна небольшая часть данных. Это моя ошибка, – mfruizs2

Смежные вопросы