Переопределение в extjs: зачем определять this.addevents ()? - PullRequest
1 голос
/ 04 февраля 2011

В существующем коде 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'
            );

«изменение»уже определено как событие для combobox в extjs.'clear' не определен в extjs.

РЕДАКТИРОВАТЬ: Может быть, ссылка на фактический пример поможет: вот оно.http://www.sencha.com/forum/showthread.php?84300-Nullable-ComboBox&p=404222&langid=14

1 Ответ

1 голос
/ 05 февраля 2011

Вы увидите, что там определен этот метод:

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), тогда как здесь передается только один аргумент. Поэтому я думаю, что для этого события следует использовать другое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...