我正在尝试从它的索引模板链接到一个帖子,但无法弄清楚动态链接到参数。看起来我需要传递一个topic
参数,如下所示,但我不确定如何从这条路线中找到这个主题。
模板
{{#each posts in controller}}
{{#link-to 'post' topic post}}<h4>{{post.title}}</h4>{{/link-to}}
{{/each}}
路由器
App.Router.map(function() {
this.resource('topic', { path: '/:topic_id' }, function(){
this.resource('posts', { path: '/posts' });
});
this.resource('post', { path: '/:topic_id/posts/:post_id' });
});
路线
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('posts');
},
renderTemplate: function(){
this.render('posts'), {
}
}
});
答案 0 :(得分:3)
您的每个陈述都是错误的,您将其作为each posts
,但之后您正在使用post
。
{{#each post in controller}}
{{#link-to 'post' topic post}}<h4>{{post.title}}</h4>{{/link-to}}
{{/each}}
此外,我不确定topic
来自哪里。如果我猜测我可能会说它可能在父控制器上。在这种情况下,您需要引用托管该模型的控制器。要在帖子控制器中执行此操作,您需要设置needs
,允许控制器与其他控制器进行通信
App.PostsController = Ember.ArrayController.extend({
needs: ['topic']
});
然后在你的模板中就像这样
{{#each post in controller}}
{{#link-to 'post' controllers.topic.model post}}<h4>{{post.title}}</h4>{{/link-to}}
{{/each}}
或者如果你想让它变得更漂亮
App.PostsController = Ember.ArrayController.extend({
needs: ['topic'],
topic: Ember.computed.alias('controllers.topic.model')
});
{{#each post in controller}}
{{#link-to 'post' topic post}}<h4>{{post.title}}</h4>{{/link-to}}
{{/each}}