了解Ember.js中的路由器资源

时间:2014-04-23 15:53:51

标签: ember.js

假设我的Ember.js应用程序有一个如下所示的路由器:

App.Router.map(function () {
  this.resource('posts');
});

我理解from the guide这意味着我有两条路线:PostsRoutePostsIndexRoute,而PostsRoute是父路线。

这是我的PostsRoute

App.PostsRoute = Em.Route.extend({
  model: function () {
    this.store.find('posts');
  },

  afterModel: function (posts) {
    var promises = posts.map(function (post) {
      return post.get('author'); // some async relationship
    });

    return Em.RSVP.Promise.all(promises);
  }
});

我的PostsIndexRoute

App.PostsIndexRoute = Em.Route.extend({
  model: function () {
    return this.modelFor('posts');
  }
});

由于我的PostsRoutePostsIndexRoute的父级,我希望它的model挂钩始终得到解决,即使从我的其他位置转换也是如此申请到&#39;帖子&#39; (例如,通过transitionTolink-to)。似乎并非如此。 <Resource><Resource>Index路线之间的关系究竟是什么?我有点困惑为什么你需要两者。

1 个答案:

答案 0 :(得分:0)

为了让Ember自动调用PostsIndexRoute的{​​{1}}挂钩,你必须用第二个参数声明你的资源。有第二个参数表明它应该有子路由(model是默认提供的路由。)

index

Here's a bin演示了这种行为。