[英]How to access controller from route in 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是最好的選擇。
我認為方法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
但我想存儲這個控制器也應該有用,如果這對你來說代碼太多了:
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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.