ember linkTo在路由的模型钩子中发送空的参数

nin 发布于 2019-03-09 ember.js 最后更新 2019-03-09 14:31 2 浏览

我有一个博客网站,其中的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}}时,它会将我带到正确的URL,呈现正确的模板(帖子/索引),但不显示任何内容。我尝试在PostIndexRoute中放置一个模型钩子,如下所示:
App.PostIndexRoute = Ember.Route.extend({
  model: function(params) {
    return App.Post.find(params.post_id);
  }
});
但是params = {}它没有数据。有人能指引我朝着正确的方向吗?我究竟做错了什么?
已邀请:

non_at

赞同来自:

由于您要传递post对象,因此您需要{{linkTo}}接受动态网址段的路线。在您的示例中,posts.index不接受参数。

<td>{{#linkTo post post}}View{{/linkTo}}</td>
以下是构建代码以更好地处理路由的方法示例:JSBin example 您还应该查看Ember.js routing guides作为如何构建路径的示例。