延迟路由更改,直到在Ember中加载数据

时间:2013-06-18 21:57:23

标签: ember.js ember-router

在Angular中,$ routeProvider resolve属性允许延迟路由更改,直到加载数据。鉴于Ember中的路径模型钩子返回一个承诺,我想知道这些东西是如何在Ember

中完成的

这就是我在棱角分明Delaying AngularJS route change until model loaded to prevent flicker

中的意思

带有示例代码的链接非常棒

1 个答案:

答案 0 :(得分:5)

就在最近,这个PR异步转换引入了ember.js。通过此更改,您可以执行各种操作,例如,如果数据仍在进行中,则会延迟路径转换。一条路线现在有各种各样的钩子可以做你想要的。

作为一个示例(取自下面提到的要点)afterModel钩子中你可以做这样的事情,如果你真的有这种情况只转换到post.show路线数据:

App.PostsIndexRoute = Ember.Route.extend({
  afterModel: function(posts, transition) {
    if (posts.length === 1) {
      this.transitionTo('post.show', posts[0]);
    }
  }
});

由于这些新功能仍然非常年轻,因此您需要使用latest master来使其可用。有关如何使用API​​的更多信息,请see this gist

希望有所帮助