Ember.js:从嵌套路由调用 ApplicationRoute 的操作
Posted
技术标签:
【中文标题】Ember.js:从嵌套路由调用 ApplicationRoute 的操作【英文标题】:Ember.js: Call actions of ApplicationRoute from nested route 【发布时间】:2013-11-12 12:27:36 【问题描述】:假设我有一个ApplicationRoute
和一个动作goBack
(正如您在评论中看到的,由于不同移动浏览器中的错误,我需要自己处理 goBack):
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)
如何从另一条路线触发此操作?请注意,由于我需要调用@transitionTo
,因此这段代码必须在路由内。
【问题讨论】:
【参考方案1】:默认情况下,动作冒泡到应用程序路由!只需在模板中使用action 'goBack'
,或从代码(减去组件)调用this.send('goBack')
。从组件中,您需要连接事件调用有点不同并使用this.sendAction('internalActionName')
。
http://emberjs.jsbin.com/ulIhUze/1/edit
【讨论】:
以上是关于Ember.js:从嵌套路由调用 ApplicationRoute 的操作的主要内容,如果未能解决你的问题,请参考以下文章
Ember.js 路由器和 initialState 中的嵌套路由