Ember.js:从嵌套路由调用ApplicationRoute的操作

Ember.js:从嵌套路由调用ApplicationRoute的操作,ember.js,coffeescript,Ember.js,Coffeescript,假设我有一个ApplicationRoute,带有一个动作goBack(正如您在评论中看到的,由于不同移动浏览器中存在bug,我需要自己处理goBack): 如何从其他路径触发此操作?请注意,由于我需要调用@transitiono,因此这段代码必须位于路由内。默认情况下,操作会出现在应用程序路由上!只需在模板中使用{{action'goBack'},或者从代码(减去组件)调用this.send('goBack')。从组件中,您需要连接稍微不同的事件调用,并使用this.sendAction('i

假设我有一个
ApplicationRoute
,带有一个动作
goBack
(正如您在评论中看到的,由于不同移动浏览器中存在bug,我需要自己处理goBack):


如何从其他路径触发此操作?请注意,由于我需要调用
@transitiono
,因此这段代码必须位于路由内。

默认情况下,操作会出现在应用程序路由上!只需在模板中使用
{{action'goBack'}
,或者从代码(减去组件)调用
this.send('goBack')
。从组件中,您需要连接稍微不同的事件调用,并使用
this.sendAction('internalActionName')

Mobile.ApplicationRoute = Em.Route.extend
    actions:
        goBack: ->
            # TODO: Remove when iOS 7 fixed their history
            # If there's no route to go back, go to front
            # TODO: Remove when Microsoft fixed their
            # back button in offline mode
            if not (Nn.MobileHelper.isiPhone() or Nn.MobileHelper.isIeMobile()) and @get("router.recentRoute")?
                return window.history.back()

            @get("controller").set("isHitBackButton", true)

            @transitionTo("front").then => @get("controller").set("isHitBackButton", false)