Dựa trên chì và rà soát các nguồn v1.5 Ember tôi sử dụng sau Mudasi Ali:
Coffeescript (sử dụng coffeescript.org để transpile nếu bạn muốn JS/ES):
Ember.Route.reopen
parentRoute: Em.computed ->
r = @router.router
if r.currentTransition
handlerInfos = r.currentTransition.state.handlerInfos
else
handlerInfos = r.state.handlerInfos
handlerInfos = this.router.router.state.handlerInfos
return unless handlerInfos
parent = @
for info in handlerInfos
break if info.handler == @
parent = info.handler
parent
parentRouteName: Em.computed.alias('parentRoute.routeName')
parentController: ->
@controllerFor @get('parentRouteName')
parentModel: ->
@modelFor @get('parentRouteName')
trên đây cung cấp các thuộc tính parentRoute
và parentRouteName
, trên tất cả các tuyến đường của bạn và hai chức năng tiện dụng parentController()
và parentModel()
mà trả lại bộ điều khiển phụ huynh và mô hình tương ứng có thể hữu ích cho nhiều tình huống, đặc biệt nếu bạn đại diện cho việc chỉnh sửa tài nguyên dưới dạng một tuyến đường lồng nhau.
Bạn cũng có thể xác định một số hành động để sử dụng trong quan điểm của bạn/điều khiển vv cho hủy/trở lại xử lý như sau:
Ember.Route.reopen
actions:
goBack: ->
@transitionTo @get('parentRouteName')
Nếu bạn có một hệ thống phân cấp định tuyến sâu và muốn nói bỏ qua một con đường trung gian, bạn chỉ cần ghi đè GoBack như sau:
App.SomeIntermediateRouteToSkipOnBack = Em.Route.extend
actions:
goBack: ->
# skip the immediate parent and use the grandparent route
@transitionTo @get('parentRoute.parentRouteName)
Nguồn
2014-05-09 04:11:04
Câu trả lời hay - cảm ơn bạn. Tôi đã thực hiện điều này và nó hoạt động một điều trị! – iHiD
Lưu ý rằng bạn không thể sử dụng điều này để lấy tuyến đường mẹ của tuyến đường hiện đang được chuyển sang (ví dụ: khi trang đang được tải) vì currentHandlerInfos có thể không được đặt. Tôi đã cố gắng sử dụng điều này trong một lớp cơ sở xử lý tuyến đường để có được mô hình của cha mẹ mà không biết tên của nó, tiếc là tải trang quá sớm để làm như vậy. –
Vì vậy, đây là cách tốt để có được tên tuyến đường mẹ của tuyến đường CURRENT, và không phải của đối tượng tuyến mà từ đó phương thức được gọi. Đó là bởi vì bạn đang nhận được thứ bậc của các tuyến đường thông qua 'bộ định tuyến'. – Huafu