我在Ember路由器中有2个嵌套资源,Post和Comment。我希望这能反映出网址:
/posts/1/comments/1
应该转到此页面,
以下是jsbin上的示例。
我的路由代码是,
App.Router.map(function() {
this.resource('home', { path: '/' });
this.resource('posts', { path: '/posts' }, function() {
this.resource('post', { path: ':post_id' }, function() {
this.resource('comments', { path: 'comments' }, function() {
this.resource('comment', { path: ':comment_id' }, function() {
// need explicit index
});
});
});
});
});
模板和Ember代码的其余部分非常多。唯一不同的是我从主路线重定向到/posts/1/comments/1
。
我无法在/ index模板中获取帖子或评论。帖子正文和评论正文都是空白的。
如果我将索引模板的内容嵌入主帖子或评论模板中,它就有效。但这不是我需要的,评论需要嵌套在帖子中。
任何想法如何让这个工作?感谢。
PS:我最近使用的是ember-latest和ember-data。
答案 0 :(得分:3)
通常这类问题归结为命名约定。可能ember正在寻找你不期望的控制器和模板。尝试将以下内容添加到您的应用程序然后观看控制台,它将帮助您查看正在使用的路由/控制器/模板。
App = Ember.Application.create({
LOG_ACTIVE_GENERATION: true,
LOG_TRANSITIONS: true,
LOG_VIEW_LOOKUPS: true
});
此外,这些路线可能比他们需要的更复杂。通常,将'post'路由嵌套在'posts'资源中是没有意义的。同样适用于评论/评论。试试这个:
App.Router.map(function() {
this.route('posts');
this.resource('post', { path: '/posts/:post_id' }, function() {
this.route('comments')
this.resource('comment', { path: '/comments/:comment_id' });
});
});