在应用程序的现有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
答案 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)
,而这里只传递一个参数。因此,我认为应该使用另一个名称。