【问题标题】:ember linkTo sending empty params in route's model hookember linkTo 在路由的模型钩子中发送空参数
【发布时间】: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


【解决方案1】:

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

<td>{{#linkTo post post}}View{{/linkTo}}</td>

以下是一种构建代码以更好地处理路由的方法示例:JSBin example

您还应该查看Ember.js routing guides 作为如何构建路由的示例。

【讨论】:

  • 谢谢!!!我已经阅读了几次路由指南。我认为这条线把我搞砸了:Transitioning to posts or creating a link to posts is equivalent to transitioning to posts.index or linking to posts.index 所以我认为我需要过渡到 post.index,而不仅仅是 post
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多