/ / Appel d'une méthode de contrôleurs dans un autre contrôleur Ember - ember.js, ember-controllers

Appel d'une méthode de contrôleurs dans un autre contrôleur Ember - ember.js, ember-controllers

J'utilise Need Api d’Ember pour appeler une méthode d’un contrôleur dans un autre contrôleur. Je peux obtenir l’instance du contrôleur, mais lorsque je l’appelle méthode, elle me renvoie cette erreur. TypeError: Object [object Object] has no method.

Voici comment je l'appelle:

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


}
}
});

C'est le contrôleur dont je veux appeler la fonction

Cards.AccountInfoController = Ember.Controller.extend({


actions:{

test: function(){

alert(1);
}

}

});

Comment puis-je le résoudre?

Réponses:

11 pour la réponse № 1

test n'est techniquement pas une méthode, mais une action ou un événement. Utilisez le send méthode à la place:

this.get("controllers.account_info").send("test", arg1, arg2);

4 pour la réponse № 2

Selon la documentation Ember; créez une propriété qui recherche paresseusement un autre contrôleur dans le conteneur. Ceci ne peut être utilisé que lors de la définition d'un autre contrôleur.

Exemple d'application de la braise:

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

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

exemple d'application de braise moderne:

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

Vous pouvez trouver plus documentation sur Ember.inject ici