2016-04-14 28 views
0

Basit uzak depolar tarafından desteklenen bir çift combobox'ım olduğunu varsayalım. Kombobox seçimi seçili kayıtları (değerler değil) kullanarak değiştirdiğinde bir görev yapmam gerekiyor. Uzak bir combobox'a bir değer nasıl atanır ve ExtJS6'da karşılık gelen bir kayıt nasıl alınır?

{ 
    xtype: 'combo', 
    reference: 'combo1', 
    store: { 
     type: 'MyStore1', 
    }, 
    displayField: 'name', 
    valueField: 'id', 
    listeners: { 
     select: 'onSelect', 
    }, 
}, 

{ 
    xtype: 'combo', 
    reference: 'combo2', 
    store: { 
     type: 'MyStore2', 
    }, 
    displayField: 'name', 
    valueField: 'id', 
    listeners: { 
     select: 'onSelect', 
    }, 
}, 

//controller 
doTask: function(record1, record2){ 
    console.log(record1.data.name, record2.data.name); 
}, 

onSelect: function(combo, record) { 
    var record1 = this.lookupReference('combo1').getSelection(); 
    var record2 = this.lookupReference('combo2').getSelection(); 
    this.doTask(record1, record2); 
}, 

Şimdi sadece id değerlerine sahip olduğunda doTask() tetiklemek çalışıyorum ve böyle bir şey ile sona erdi am:

initData: function(id1, id2){ 
    this.lookupReference('combo1').setValue(id1); 
    this.lookupReference('combo2').setValue(id2); 

    var self = this; 
    var waitTimer = Ext.Function.interval(function(){ 

     var record1 = this.lookupReference('combo1').getSelection(); 
     var record2 = this.lookupReference('combo2').getSelection(); 

     if(record1 && record2){ 
      window.clearInterval(waitTimer); 

      this.doTask(record1, record2); 
     } 
    }, 100, self); 
} 

daha iyi bir yolu var mı?

+0

Neden zamanlayıcı kullanıyorsunuz? Bu, kayıtların bu kimliklerle yüklenmesini beklemek istemez miydi? – JChap

+0

Evet, getSelection() hemen çağrılırsa boştur. Temel olarak konu, mevcut değer için bir kayıt yüklendiğinde nasıl yakalanacağıdır, böylece ona erişebiliyorum. – serg

cevap

0

Yönteminizin, yazarak girdiğiniz değerlerle çalışıp çalışmadığını gözden geçirmelisiniz. O konuda emin değilim.

findRecordByValue wiht getValue'u da kullanabilirsiniz. Bu, seçimi ya seçim yoluyla ya da yazarak değeri kullanarak depoyu arar. Öte yandan, bu durum boş görünebilir, örn. Yazılan değer mağazada değilse.

İlgili konular