enter
了解您可以在路线内处理的事件可能会有所帮助:
other: Ember.Route.extend({
route: '/other',
connectOutlets: function(router, context) { /* ...? */ }),
enter: function(router) {
// ...
}
})
不确定是否有更适合您需求的解决方案。
更新:如果您使用action
帮助程序,单击事件将根据您的需要触发操作。示例 - 在模板中:<a {{action gotoOtherState href="true"}}>Go to other state</a>
,以及您所在的路线(或祖先......在这种情况下为索引路线):gotoOtherState: Ember.Route.transitionTo('path.to.otherState')
。
这href=true
是<a>
标签的可选触摸。您还可以定义自己的转换:
gotoOtherState: function(router, event) {
// Setup? Teardown?
// ...
router.transitionTo('path.to.otherState');
}
注意:如果你在你的动作助手中传递一个上下文(例如{{action gotoOtherState this}}
),你可以通过事件访问它:router.transitionTo('path.to.otherState', event.context);
更新 2: enter
是一个私人钩子,activate
而是一个新的公共钩子(见http://emberjs.com/blog/2013/02/15/ember-1-0-rc/)