2013-08-26 4 views
5

у меня есть проблемы с моим контроллеромExtjs 4,2 Параметр у слушателей функционировать

Ext.define('app.controller.myController', { 
    init: function() { 
     this.control({ 
      '#myinputfield': { 
       change: this.textFieldChange(parameter) 
      } 
     }) 
    }, 
    textFieldChange: function(parameter) { 
     //do something 
    } 
}); 

его взгляд, как этот проблема, когда я дать параметром здесь

change: this.textFieldChange(parameter) 

затем его огонь после сайта и я не знаю почему.

без параметров Ожидание события изменения, как должно быть может any1 помочь мне, пожалуйста?

ответ

7

Это потому, что:

change: this.textFieldChange здесь вы даете ссылку на эту функцию для этого свойства

change: this.textFieldChange(parameter) здесь вы даете результат функции этого свойства (что, если мы не» t use return, то это будет undefined).

Вы можете использовать переменную eOpts в определении функции, для пользовательских параметров отправки см в примере:

Ext.define('app.controller.myController', { 
    init: function() { 
     this.control({ 
      '#myinputfield': { 
       change: { 
        fn : this.textFieldChange, 
        params : { 
         param1: 'something' 
        } 
       } 
      } 
     }) 
    }, 
    textFieldChange: function(textfield, newValue, oldValue, eOpts) { 
     var params = eOpts.params; 
     console.log(params.param1); 
     //do something 
    } 
});

Смежные вопросы