Подтвердить что ты не робот

Как получить доступ к контроллеру с маршрута в Ember?

Есть ли какой-либо надежный способ доступа к контроллеру с маршрута?

<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'

SomeAction очень общий, и я считаю, что ApplicationRoute - лучшее место для него.

4b9b3361

Ответ 1

Я думаю, что метод controllerFor должен быть доступен в этом случае:

App.ApplicationRoute = Ember.Route.extend
  events:
    someAction: (user) ->
      console.log this.controllerFor("currentUser").get("name")

Обновить в ответ на вопросы в сообщениях:

Все зависит от того, что вы хотите сделать. Беспокойство по поводу СУХОЙ по такому базовому методу не имеет особого значения imho.

В вашем случае, оставленном в порядке, я сделал бы это:

App.ApplicationRoute = Ember.Route.extend
  events:
    someAction: (user) ->
      this.controllerFor("currentUser").decrementKudos();
      // implement the decrementKudos in your controller

Но я думаю, что хранение этого одного контроллера также должно работать, если для вас слишком много кода:

App.ApplicationRoute = Ember.Route.extend
  currentUserCon : this.controllerFor("currentUser")
  events:
    someAction: (user) ->
      this.currentUserCon.decrementKudos();
      // implement the decrementKudos in your controller

Ответ 2

В новой версии ember вы можете получить доступ к текущему контроллеру маршрута по маршруту ниже

Эмбер версии 2.5

currentUserCon : this.controller

если вы хотите получить доступ к другому контроллеру маршрутов, используйте метод controllerFor.

this.controllerFor('path to controller'); //put path to controller as parameter.