Existe-t-il un moyen infaillible d'accéder au contrôleur à partir d'un itinéraire?
<a href="#" class="btn" {{action "someAction" user}}>add</a>
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
console.log 'give me name from currentUser controller'
La someAction est très générale et je pense que ApplicationRoute est le meilleur endroit pour cela.
Je pense que la méthode controllerFor
devrait être disponible dans cet événement:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
console.log this.controllerFor("currentUser").get("name")
pdate en réponse aux questions dans les commentaires:
Tout dépend de ce que vous voulez faire. Se soucier de DRY sur une telle méthode de base, ne fait pas grand-chose sens à mon humble avis.
Dans vos félicitations, je ferais ceci:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
this.controllerFor("currentUser").decrementKudos();
// implement the decrementKudos in your controller
Mais je suppose que le stockage de ce contrôleur devrait également fonctionner, si c'est trop de code pour vous:
App.ApplicationRoute = Ember.Route.extend
currentUserCon : this.controllerFor("currentUser")
events:
someAction: (user) ->
this.currentUserCon.decrementKudos();
// implement the decrementKudos in your controller
Dans la nouvelle version de ember vous pouvez accéder au contrôleur de la route actuelle dans la route comme ci-dessous
Ember version 2.5
currentUserCon : this.controller
si vous souhaitez accéder à un autre contrôleur de routes, utilisez la méthode controllerFor
.
this.controllerFor('path to controller'); //put path to controller as parameter.