是否有从路由访问 Controller 的简便方法?

<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是最好的选择。

最佳答案

我认为方法controllerFor在这种情况下应该可用:

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

根据评论中的问题更新:

这完全取决于您要做什么。担心使用这种基本方法进行DRY,恕我直言。

在你的荣誉的情况下,我会这样做:
App.ApplicationRoute = Ember.Route.extend
  events:
    someAction: (user) ->
      this.controllerFor("currentUser").decrementKudos();
      // implement the decrementKudos in your controller

但是我想如果这对您来说太多的代码,存储这个 Controller 也应该可以工作:
App.ApplicationRoute = Ember.Route.extend
  currentUserCon : this.controllerFor("currentUser")
  events:
    someAction: (user) ->
      this.currentUserCon.decrementKudos();
      // implement the decrementKudos in your controller

10-08 13:21