2013-08-26 29 views
5
problema

ho con il mio controllerExtJS 4.2 parametri in funzione ascoltatori

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

il suo aspetto come questo il problema è quando mi danno il parametro qui

change: this.textFieldChange(parameter) 

poi il suo fuoco dopo sito caricare e non so perché.

senza parametro il suo evento in attesa di modifica come dovrebbe può aiutarmi qualsiasi1 per favore?

risposta

7

È perché:

change: this.textFieldChange qui si stanno dando il riferimento per questa funzione a questa proprietà

change: this.textFieldChange(parameter) qui si stanno dando il risultato della funzione a questa proprietà (che se don' t utilizzare return, quindi sarà undefined).

È possibile utilizzare la variabile eOpts nella definizione della funzione, per il parametro personalizzato l'invio, consultare nell'esempio:

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