已经有类似的问题了。
假设以下路线:
App.Router.map(function (match) {
match('/').to('index');
match('/posts').to('posts', function (match) {
match('/').to('postsIndex');
match('/:post_id').to('post', function (match) {
match('/comments').to('comments', function (match) {
match('/').to('commentsIndex');
match('/:comment_id').to('showComment');
});
});
});
});
是否可以同时访问post_id
和comment_id
in ShowCommentRoute
?否则我应该忘记模型中的复合键吗?
为什么CommentsRoute#model(params)
和CommentsIndexRoute
论点总是空洞的?什么时候检索Post
评论?
我的小提琴。
也运行这个例子(有控制台日志显示问题。
经过一番调查后更新:
只会PostRoute
有params.post_id
。只会ShowCommentRoute
有params.comment_id
和不会有params.post_id
。
这对于模型具有复合键的应用程序是不可接受的。如果我们showComment
逐步过渡到,我们可以获得Comment
实例:
App.ShowCommentRoute = Ember.Route.extend({
model: function(params) {
var post_id = this.controllerFor('post').get('content.id');
return App.Comment.find(post_id, params.comment_id);
}
});
但是,如果我们直接访问,这将不起作用/posts/1/comments/1
。在这种情况下this.controllerFor('post')
总是undefined
。
- 如果您有带有动态段的嵌套路由,则无法
*IndexRoute
在(PostRoute
和PostInderRoute
本例中)中访问此段 - 简而言之,直接访问嵌套路由是无法获得父路由模型的。