2013-08-26 37 views
5

ja mam problem z moim kontrolerExtJS 4.2 Parametr w słuchaczy funkcjonować

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

jej wyglądać tak Problem jest, gdy daję parametru tutaj

change: this.textFieldChange(parameter) 

następnie jego ogień się po stronie ładować i nie wiem dlaczego.

bez parametru oczekiwania na zmianę wydarzenia, tak jak powinno być czy ktoś może mi pomóc?

Odpowiedz

7

To dlatego, że:

change: this.textFieldChange tutaj dajesz odniesienia dla tej funkcji tej właściwości

change: this.textFieldChange(parameter) tutaj dajesz wynik funkcji tej właściwości (które, jeśli don” t użyj zwrotu, to będzie undefined).

Można użyć zmiennej eOpts w definicji funkcji, za zwyczaj parametr wysyłanie, patrz na przykład:

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 
    } 
});