Extjs 4.1 Combo - 如何使选择函数在调用combo.setValue时触发

8

I have a combo like

        items: {  
            xtype: 'combo',
            id: 'combo',
            queryMode: 'local',                
            displayField: 'name',
            valueField: 'id',
            store: Ext.create('Ext.data.Store', {
                fields: ['id', 'name', 'mydata'],
                data: [
                  {'id': '1', 'name': 'John Smith', 'mydata': ["3", "4"]},
                  {'id': '2', 'name': 'Albert Einstein', 'mydata': ["1", "2"]}
                ]
            }),
            listeners: {
               select: function( combo, records, eOpts ) {
                    alert(records[0].get('mydata')); // records is undefined
               }
            }
        }

但当我使用时
    var combo = Ext.getCmp('combo');
    //combo.select("1");
    combo.setValue("1");
    combo.fireEvent('select');

然后 alert(records[0].get('mydata')); // records is undefined 失败了。如何解决这个问题,谢谢。
这是我的代码: http://jsfiddle.net/LZ8XU/

2个回答

13

由于某些原因,Ext comboBox的select方法不能触发选择事件。根据您的问题,我认为您想设置一个值,并手动触发选择事件。如果是这样,还需要传递一些其他字段,具体来说是comboBox本身和所选记录。

以下是实现示例。

var combo = Ext.getCmp('combo');
var toselect = "Albert Einstein";

combo.select(toselect);
var record = combo.getStore().findRecord('name', toselect);
combo.fireEvent('select', combo, [record]);

没错,调用select()方法时不会自动触发选择事件。他们应该像按钮的切换方法一样包括一个suppressEvent布尔参数。 - Gabriel Hautclocq
@Kyle Fransham:你能帮我解决http://stackoverflow.com/questions/21521112/extjs-combobox-change-even-code-executed-on-page-load这个问题吗? - Poonam Bhatt

4
为什么不监听change事件呢?

请帮我解决http://stackoverflow.com/questions/21521112/extjs-combobox-change-even-code-executed-on-page-load的问题。 - Poonam Bhatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接