javascript - tutorial - ember.js ventajas y desventajas
¿Cómo acceder al controlador desde la ruta en Ember? (2)
¿Hay alguna forma infalible de acceder al controlador desde una ruta?
<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''
El someAction es muy general y creo que ApplicationRoute es el mejor lugar para ello.
Creo que el método controllerFor
debería estar disponible en este caso:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
console.log this.controllerFor("currentUser").get("name")
Actualización en respuesta a las preguntas en los comentarios:
Todo depende de lo que quieras hacer. Preocuparse por DRY en un método tan básico, no tiene mucho sentido.
En su caso de felicitaciones, haría esto:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
this.controllerFor("currentUser").decrementKudos();
// implement the decrementKudos in your controller
Pero creo que el almacenamiento de este controlador también debería funcionar, si esto es demasiado código para usted:
App.ApplicationRoute = Ember.Route.extend
currentUserCon : this.controllerFor("currentUser")
events:
someAction: (user) ->
this.currentUserCon.decrementKudos();
// implement the decrementKudos in your controller
En la versión más nueva de Ember, puede acceder al controlador de la ruta actual en la ruta, como se muestra a continuación.
Ember versión 2.5
currentUserCon : this.controller
si desea acceder a otro controlador de rutas, utilice el método controllerFor
.
this.controllerFor(''path to controller''); //put path to controller as parameter.