Как добавить событие click в extjs autoel? - PullRequest
1 голос
/ 03 января 2012

Если я добавлю кнопку, подобную этой

xtype: 'component',
autoEl: {
  html: '<input type="submit" class="custom_loginbtn" value="Submit"  id="login"/>'
}

есть идеи, как добавить событие щелчка к этому?

С уважением

Ответы [ 4 ]

4 голосов
/ 03 января 2012

попробуйте добавить слушателя

listeners: {
              render: function(component){
                   component.getEl().on('click', function(e){
                   console.log(component);
                   alert('test');
                     });    
               }
            }

проверить это

2 голосов
/ 05 января 2012

Это лучший подход, обратите внимание на использование управляемого слушателя с .mon() вместо .on(), который лучше использовать, когда вы слушаете элементы DOM из компонентов, которые могут быть уничтожены

xtype: 'component'
,html: '<input type="submit" class="custom_loginbtn" value="Submit"  id="login"/>'
,listeners: {
    afterrender: function(inputCmp) {
        inputCmp.mon(inputCmp.el, 'click', function(){alert('click!')}, this, {delegate:'input'});
    }
    ,single: true
}

Кроме того, использование autoEl аналогично простому заданию свойства html компонента, другие параметры autoEl позволяют управлять типом и атрибутами внешнего тега, который автоматически создается для охвата компонента

Если вы сделали это вместо этого, вы могли бы превратить сам компонент в <input> и избежать переноса <div>:

xtype: 'component'
,autoEl: {
    tag: 'input'
    ,cls: 'custom_loginbtn'
    ,type: 'submit'
    ,value: 'Submit'
}
,listeners: {
    afterrender: function(inputCmp) {
        // no delegate needed, since inputCmp.el is the <input>
        inputCmp.mon(inputCmp.el, 'click', function(){alert('click!')}, this);
    }
    ,single: true
}
2 голосов
/ 04 января 2012
xtype   : 'component',
itemId  : 'submitbtn',
autoEl  : {
  html  : '<input type="submit" class="custom_loginbtn" value="Login" id="login"/>'
},
listeners   : {
  el : {
    delegate : 'input',
    click    : function()
    {

    }
  }
}
0 голосов
/ 03 января 2012

Вы используете стандартную кнопку отправки, почему бы не использовать кнопку xtype?- у него есть обработчик, который вы можете указать для события щелчка.

...