ルートからコントローラーにアクセスするための簡単な方法はありますか?
<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
ただし、コードが多すぎる場合は、この1つのコントローラーを格納することもできます。
App.ApplicationRoute = Ember.Route.extend
currentUserCon : this.controllerFor("currentUser")
events:
someAction: (user) ->
this.currentUserCon.decrementKudos();
// implement the decrementKudos in your controller
emberの新しいバージョンでは、以下のようにルート内の現在のルートのコントローラーにアクセスできます
Emberバージョン2.5
currentUserCon : this.controller
他のルートコントローラにアクセスする場合は、controllerFor
メソッドを使用します。
this.controllerFor('path to controller'); //put path to controller as parameter.