如何为远程组合框分配值并在ExtJS6中获取相应的记录?

时间:2016-04-14 17:37:55

标签: extjs 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);
},

现在我尝试仅在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);
}

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您应该查看您的方法是否适用于您输入的值。不确定。

您也可以使用findRecordByValue getValue。这将使用通过选择或键入选择的值搜索商店。另一方面,这可能是空白的,例如如果键入的值不在商店中。

相关问题