0

我有一个带有如下所示路线的jsfiddle ,它与emberjs 指南中的路线完全相同,当我单击附加到{{post.title}}的#linkTo 助手时,它应该向我显示单个帖子,但它没有,而是控制台显示此错误:

未捕获的错误:断言失败:无法在未定义的对象上调用带有“id”的 get。

此外,当我单击主页上的帖子链接时,它会显示所有标题,但在控制台中,它也会显示此错误:

未捕获的错误:您所做的某事导致视图在渲染后但在插入 DOM 之前重新渲染。

EmBlog.Router.map(function() {
  this.resource("posts", function(){
    this.route('show', {path: '/:post_id'}) ;
  });
});

emberjs指南相同的模板

<script type="text/x-handlebars" data-template-name="posts/index">
  {{#each post in content}}
    <p>{{#linkTo 'posts.show' post}} {{post.title}}  {{/linkTo}}</p>
 {{/each}}
</script>

我查看了这个提交,它添加了对字符串文字的支持作为 {{linkTo}} 的参数,特别是来自该提交的以下建议:

现在,Ember 允许您将字符串文字指定为参数。{{#linkTo post popular}}将在当前上下文中查找“流行”属性并生成一个指向具有该 ID 的模型的 URL。而{#linkTo post "popular"}}会将字符串文字 "popular" 视为模型。

4

1 回答 1

2

似乎唯一的问题是您忘记将上下文传递给 posts/show 模板中的 linkTo posts.edit 助手。

<script type="text/x-handlebars" data-template-name="posts/show">
  <h1>Post</h1>
  <p>Your content here.</p>
  <h3> {{title}} </h3>
  <h3> {{body}} </h3>
  <br/>
  <p> {{#linkTo 'posts.index'}} back {{/linkTo}}</p>
  <p> {{#linkTo 'posts.edit' content}} Edit the post  {{/linkTo}}</p>  
</script>

这是一个工作小提琴,顺便说一句,我已经清理了一些,有些东西对我来说似乎没用。

http://jsfiddle.net/rxWzu/9/

于 2013-01-20T16:57:39.170 回答