2013-08-26 14 views
5

Ich habe Probleme mit meinem ControllerExtJS 4.2 Parameter in Zuhörer funktionieren

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

sein Aussehen wie dieses das Problem ist, wenn ich Parameter hier geben

change: this.textFieldChange(parameter) 

dann sein Feuer nach oben Website laden und ich weiß nicht warum.

ohne Parameter seine Warte auf Änderung Ereignis wie es sollte kann mir bitte1 helfen?

Antwort

7

Es ist, weil:

change: this.textFieldChange hier Sie für diese Funktion, um diese Eigenschaft die Referenz geben

change: this.textFieldChange(parameter) hier Sie das Ergebnis der Funktion dieser Eigenschaft geben (was, wenn wir don‘ t verwenden Rückkehr, dann wird es undefined sein).

können Sie verwenden, um die eOpts Variable in der Funktionsdefinition, für benutzerdefinierte Parameter senden, siehe Beispiel:

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