簡體   English   中英

如何從Ember的路線訪問控制器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM