,对于RC4:
LINKTO现在生成ROUTETO活动
以前,{{linkTo}}帮助程序导致路由器转换 没有任何钩子影响该行为。感谢Alex的工作 Matchneer,{{linkTo}}助手现在生成一个routeTo事件 可以像控制器或路径中的任何其他事件一样处理 事件对象。转换到指定的默认行为 路线保持不变。
我不明白我是如何使用它的。我试着做这样的事情:
App.ApplicationController = Ember.Controller.extend
routeTo: -> alert "hello"
但是当我点击链接时它永远不会被触发。
当我离开路线时,我的目标是回滚交易
答案 0 :(得分:1)
这应该在博客文章中,但你需要在ENV对象上启用一个标志。这可行:
Ember.ENV.ENABLE_ROUTE_TO = true
也就是说,routeTo
可能是短暂的,因为路由器API的下一次迭代已完全实现。最有可能的是,所有转换都会触发一个可以拦截以阻止转换的事件,并且可能会将该事件称为willTransition
。但这并非100%固化,因此请务必订阅https://gist.github.com/machty/5647589以获取最新信息。
我也完全错过了你问题的另一部分(或者可能是后来更新的),但是routeTo不是你在控制器上定义的属性,而是在路由上触发的事件。因此,不要在控制器上使用它,而是
App.SomeRoute = Ember.Route.extend
events:
routeTo: -> alert "hello"
但是你不希望在ApplicationRoute上使用它,因为那是默认安装的routeTo处理程序所在的位置,为你执行转换。 routeTo的全部目的是在更加传奇的路线上捕捉事件并可能阻止它发生。
只是想重申,这是API的一个非常短暂的功能(无论如何它都有点实验性,因此事实上它被包裹在一个标志中)。在next iteration of the router API中,routeTo可能会被willTransition
事件取代,我将在此事件中更新此答案。
答案 1 :(得分:0)
如果您想在离开路线时回滚交易,可以使用此处详述的停用挂钩:http://emberjs.com/api/classes/Ember.Route.html#method_deactivate
这是在路线退出之前调用的。
这样的事情:
App.MyFavouriteRoute = Ember.Route.extend({
deactivate: function() {
//roll back your transaction here
console.log('deactivating my favourite route');
}
});
请注意,如果您只是更改模型,则不会调用此类...即:如果您从/ myFavourite / 1转换为/ myFavourite / 2,则不会调用deactivate ....但是如果您转换为/ myFavourites然后它将被称为