我怎样才能使用ember routeTo事件?

时间:2013-06-05 08:25:35

标签: ember.js

来自ember.js文档的

,对于RC4:

  

LINKTO现在生成ROUTETO活动

     

以前,{{linkTo}}帮助程序导致路由器转换   没有任何钩子影响该行为。感谢Alex的工作   Matchneer,{{linkTo}}助手现在生成一个routeTo事件   可以像控制器或路径中的任何其他事件一样处理   事件对象。转换到指定的默认行为   路线保持不变。

我不明白我是如何使用它的。我试着做这样的事情:

App.ApplicationController = Ember.Controller.extend
  routeTo: -> alert "hello"

但是当我点击链接时它永远不会被触发。

当我离开路线时,我的目标是回滚交易

2 个答案:

答案 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然后它将被称为