假设我的Ember.js应用程序有一个如下所示的路由器:
App.Router.map(function () {
this.resource('posts');
});
我理解from the guide这意味着我有两条路线:PostsRoute
和PostsIndexRoute
,而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');
}
});
由于我的PostsRoute
是PostsIndexRoute
的父级,我希望它的model
挂钩始终得到解决,即使从我的其他位置转换也是如此申请到'帖子' (例如,通过transitionTo
或link-to
)。似乎并非如此。 <Resource>
和<Resource>Index
路线之间的关系究竟是什么?我有点困惑为什么你需要两者。
答案 0 :(得分:0)
为了让Ember自动调用PostsIndexRoute
的{{1}}挂钩,你必须用第二个参数声明你的资源。有第二个参数表明它应该有子路由(model
是默认提供的路由。)
index
Here's a bin演示了这种行为。