Lets sagen, ich habe ein Paar Comboboxen von einfachen Remote-Stores unterstützt. Ich muss einige Aufgaben ausführen, wenn sich die Combobox-Auswahl mit ausgewählten Datensätzen ändert (keine Werte).Wie weisen Sie einer Remote-Combobox einen Wert zu und erhalten einen entsprechenden Datensatz in ExtJS6?
{
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);
},
Jetzt versuche ich doTask()
auszulösen, wenn nur id
Werten, und endete mit so etwas wie dies oben:
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);
}
Gibt es einen besseren Weg?
Warum verwenden Sie den Timer hier? Wollen Sie warten, bis die Datensätze mit diesen IDs geladen sind? – JChap
Ja, getSelection() ist null, wenn es sofort aufgerufen wird. Grundsätzlich ist das Problem, wie man fängt, wenn ein Datensatz für den aktuellen Wert geladen wird, damit ich darauf zugreifen kann. – serg