Tôi nghĩ rằng phương pháp controllerFor
nên có sẵn trong sự kiện này:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
console.log this.controllerFor("currentUser").get("name")
Cập nhật để đáp ứng với những câu hỏi trong commments:
Tất cả phụ thuộc vào những gì bạn muốn làm. Lo lắng về DRY trên phương pháp cơ bản như vậy, không có nhiều ý nghĩa.
Trong tiếng tăm của bạn rời trường hợp tôi sẽ làm điều này:
App.ApplicationRoute = Ember.Route.extend
events:
someAction: (user) ->
this.controllerFor("currentUser").decrementKudos();
// implement the decrementKudos in your controller
Nhưng tôi đoán lưu trữ này một bộ điều khiển cũng nên làm việc, nếu điều này là quá nhiều mã cho bạn:
App.ApplicationRoute = Ember.Route.extend
currentUserCon : this.controllerFor("currentUser")
events:
someAction: (user) ->
this.currentUserCon.decrementKudos();
// implement the decrementKudos in your controller
Cảm ơn, nhưng có thể tham chiếu đến thuộc tính đó, ví dụ: tôi có thể lưu trữ nó trong một biến để tôi có thể hoạt động trên đó không? 'name = this.controllerFor ('currentUser'). Hãy lấy 'name'' ' return "hello, # {name}' có thể không? Truy cập bộ điều khiển theo cách nhiều lần không phải là DRY :) – wryrych
Ví dụ đây sẽ là một quá mức cần thiết: 'this.controllerFor ('currentUser') .đặt 'kudosLeft', this.controllerFor ('currentUser'). get 'kudosLeft' - 1' :) – wryrych
Xem phản hồi được cập nhật của tôi. – mavilein