我有一个博客网站,访问 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({
});
Controller :
/****** 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}}
,它都会带我到正确的 url,呈现正确的模板(post/index),但没有任何显示。我试过像这样在 PostIndexRoute 中放置一个模型 Hook :
App.PostIndexRoute = Ember.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
}
});
但是 params = {}
里面没有数据。有人能指出我正确的方向吗?我做错了什么?
最佳答案
由于您要传递 post
对象,因此您需要 {{linkTo}}
接受动态 URL 段的路由。在您的示例中,posts.index
不接受参数。
<td>{{#linkTo post post}}View{{/linkTo}}</td>
以下是构建代码以更好地处理路由的方法示例:JSBin example
您还应该查看 Ember.js routing guides作为如何构建路由的示例。
关于javascript - ember linkTo 在路由的模型 Hook 中发送空参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953330/