【发布时间】:2013-04-11 15:50:45
【问题描述】:
我有一个博客站点,访问 url /posts 应该列出所有帖子。然后单击/posts/:post_id 的链接应该会显示该帖子的详细信息。但是,单击链接时,linkTo 似乎没有正确传递:post_id。这是我的代码:
路由器:
App.Router.map(function() {
this.resource("posts", function() {
this.resource("post", { path: "/:post_id" }, function() {
//other routes
});
});
this.route("posts.index", { path: "/" });//Links root url to posts index template
});
路线:
/****** Posts ******/
App.PostsRoute = Ember.Route.extend({
});
App.PostsIndexRoute = Ember.Route.extend({
model: function() {
return App.Post.find();
}
});
/****** Post *******/
App.PostRoute = Ember.Route.extend({
});
App.PostIndexRoute = Ember.Route.extend({
});
控制器:
/****** Posts ******/
App.PostsController = Ember.ArrayController.extend({
});
App.PostsIndexController = Ember.ArrayController.extend({
});
/****** Post ******/
App.PostController = Ember.ObjectController.extend({
});
App.PostIndexController = Ember.ObjectController.extend({
});
帖子/索引模板:
{{#each post in controller}}
<tr>
<td>{{post.name}}</td>
<td>{{post.title}}</td>
<td>{{post.content}}</td>
<td>{{#linkTo post.index post}}View{{/linkTo}}</td>
</tr>
{{/each}}
每次我单击{{linkTo post.index post}} 时,它都会将我带到正确的网址,呈现正确的模板(帖子/索引),但没有显示任何内容。我尝试在 PostIndexRoute 中放置一个模型钩子,如下所示:
App.PostIndexRoute = Ember.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
}
});
但是 params = {} 里面没有数据。有人可以指出我正确的方向吗?我做错了什么?
【问题讨论】:
-
我不确定,但您是否需要在
PostIndexRoute的模型挂钩中调用return this.modelFor("post");? -
this.modelFor("post")是做什么的? -
它使您的
PostIndexRoute使用您的PostRoute的模型,但显然,您的问题可以不用它来解决。
标签: javascript ember.js ember-router