2014-04-04 17 views
6

Sto utilizzando Emble Need Api per chiamare un metodo di un controller in un altro controller. Sono in grado di ottenere l'istanza del controller, ma quando sto chiamandolo metodo mi restituisce questo errore TypeError: Object [object Object] has no method.Chiamare un metodo di controller in un altro controller Ember

Questo è come mi chiamo esso:

Cards.CardsIndexController = Ember.Controller.extend({ 
    needs: 'account_info', 
    actions: { 
     accountInfoStart:function(){ 
       console.log(this.get('controllers.account_info').test()); // error here 


     } 
    } 
}); 

Questo è il controller di cui voglio funzione chiamare

Cards.AccountInfoController = Ember.Controller.extend({ 


    actions:{ 

     test: function(){ 

      alert(1); 
     } 

    } 

}); 

Come posso risolverlo?

risposta

11

test non è tecnicamente un metodo, ma un'azione o un evento. Utilizzare invece il metodo send:

this.get('controllers.account_info').send('test', arg1, arg2); 
+0

Grazie si sta lavorando .. – mohsinali1317

+0

Per le persone che ne hanno bisogno per lavorare con le cartelle nidificate, ecco una soluzione per questo: http://stackoverflow.com/a/29269015/499700 – poweratom

4

Come da documentazione Ember; crea una proprietà che cerca pigramente un altro controller nel contenitore. Questo può essere usato solo quando si definisce un altro controller.

eredità esempio di applicazione brace:

App.PostController = Ember.Controller.extend({ 
    accountInfo: Ember.inject.controller() 

    this.get('accountInfo').send('test') 
}); 

moderno esempio di applicazione brace:

// in an ember app created with ember-cli 
// below snippet would be the app/controllers/post.js file 
import Ember from 'ember'; 
export default Ember.Controller.extend({ 
    appController: Ember.inject.controller('application') 
}); 

Puoi trovare altri documentation about Ember.inject here

+2

Per gli utenti che navigano sul web, questo wer è più preciso per le applicazioni che eseguono Ember 2.xe versioni successive. – efx

Problemi correlati