假设我有一对由简单远程商店支持的组合框。当组合框选择使用所选记录(而非值)更改时,我需要执行一些任务。
{
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);
},
现在我尝试仅在doTask()
值时触发id
,最后得到类似的内容:
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);
}
有更好的方法吗?
答案 0 :(得分:0)
您应该查看您的方法是否适用于您输入的值。不确定。
您也可以使用findRecordByValue
getValue
。这将使用通过选择或键入选择的值搜索商店。另一方面,这可能是空白的,例如如果键入的值不在商店中。