extjs组合覆盖:为什么要定义this.addevents()?

时间:2011-02-04 20:54:53

标签: extjs

在应用程序的现有ext js代码中,组合框被覆盖如下:

Ext.override(Ext.form.ComboBox, {
    nullable:true
    ,initComponent: Ext.form.ComboBox.prototype.initComponent.createSequence(function(){
        this.triggerConfig = {
            tag:'span', cls:'x-form-twin-triggers', cn:[
                {tag: "img", src: Ext.BLANK_IMAGE_URL, cls:'x-form-trigger '},
                {tag: "img", src: Ext.BLANK_IMAGE_URL, cls:'x-form-trigger x-form-clear-trigger'}
        ]};
        this.addEvents(
            'clear',
            'change'
        );

}})

为什么我们需要定义:

this.addEvents(
                'clear',
                'change'
            );

'change'已被定义为extjs中的组合框的事件。 “清除”未在extjs中定义。

编辑:也许对实际例子的引用会有所帮助:在这里。 http://www.sencha.com/forum/showthread.php?84300-Nullable-ComboBox&p=404222&langid=14

1 个答案:

答案 0 :(得分:1)

你会看到在那里定义了这个方法:

clearValue:Ext.form.ComboBox.prototype.clearValue.createSequence(function(){
        if(this.trigger_clear){
            this.trigger_clear.hide();
        }
        this.fireEvent('clear',  this);
        this.fireEvent('change', this);
    })

因此,两个事件都被调用,只传递了一个参数(组合框本身)。我不认为有必要在此定义change事件,因为它是从Ext.form.Field继承的。继承的change事件的签名也是(field, newValue, oldValue),而这里只传递一个参数。因此,我认为应该使用另一个名称。