2016-04-12 16 views
-2

2 adet mağaza var. İkinci mağaza kurucusundaki 1 mağazadan veriye ihtiyacım var. Nasıl yapılabilir?ExtJS 6. İkinci mağaza kurgusundaki 1 mağazadan veri kullan

+0

Neden sadece 'store2.loadData()' kullanamıyorum? Basit bir 'store2.loadData (store1.getRange())' çalışması gerekir. – ASP

+0

Denedim, yardım etmiyor. Her nasılsa veriler sadece tüm kuruculardan sonra yüklenir. 1. mağazada senkronize olsa bile. – anastsiacrs

+0

İş akışınız hakkında fikir edinmek için bazı kodları gerçekten göndermelisiniz. Şu anda, iş akışınızın işe yaramadığını düşünüyorum. Mağaza kurucusunda hiçbir zaman veri sağlamanız gerekmemelidir. Düzenleme: Ya da sadece kurucu değil, yapılandırma nesnesi demek istemezsiniz. Bakınız: http://docs.sencha.com/extjs/6.0/6.0.2-classic/#!/api/Ext.data.Store – ASP

cevap

0

Bu oldukça kolay, ancak yararsız olurdu.

Ne istediğinizi elde etmek için, store1 load1 öğesinden store2 oluşturmak zorundasınız ve söz konusu yük olayından önce deposu herhangi bir bileşene bağlayamazsınız.

Ext.define('MyApp.store.Store1',{ 
    ... 
    listeners:{ 
     load:function(store, records) { 
      var store2 = Ext.getStore("store2") || Ext.create('MyApp.store.Store2',{ 
       store1data: records 
      }); 
      Ext.getCmp("someCombobox").bindStore(store2); // you would have to use ext-empty-store on the combobox before, or else it may trigger store creation too early 
     } 

AMA, bu, iyi bir programlama stili değil, herhangi bir gerçek amaca hizmet etmez. Normalde mağaza1 yeni veri aldığında tekrar store2 için bir işlev çağırmak istersiniz. Mağaza inşaatı sırasında yapmanız gereken neredeyse hiçbir şey yok, daha sonra reconfigure veya diğer mağaza yöntemleri kullanılarak yapılamaz. (dikkate değer istisna: bir dizi mağaza ya da bir json mağazası ya da bir ağaç deposu olup olmadığına karar vermek zorundasınız).

Yani örneğin size mağaza2 üzerinde bir yöntemi tanımlamak ve mağaza1 yeniden olmuştur hemen sonra böyle hitap edebilirsiniz:

store2.someFunction = function(store1Records) { 
    var store2 = this; 
    Ext.each(store1Records,function(record) { 
     store2.getProxy().setExtraParam(record.get("paramName"),record.get("paramValue")); 
    }); 
    store2.load(); 
} 

store1.on('load',function(store, records) { 
    store2.someFunction(records); 
});