我有 jsfiddle ,其路线如下所示,与 emberjs guides 中的路线完全相同,当我点击时 {{post.title}} 附加 #linkTo帮助,它应该向我显示个别帖子,但它没有,而是控制台显示此错误:
未捕获错误:断言失败:无法在未定义的对象上使用'id'调用get。
当我点击主页上的帖子链接时,它会显示所有标题,但在控制台中,它也会显示以下错误:
未捕获错误:您执行的某些操作会导致视图在渲染后重新渲染但在插入DOM之前会重新渲染。
EmBlog.Router.map(function() {
this.resource("posts", function(){
this.route('show', {path: '/:post_id'}) ;
});
});
相同的模板
<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>
我查看了 commit that added support for string literals as param for {{linkTo}} ,特别是下面提交的建议:
现在,Ember允许您将字符串文字指定为参数。 {{#linkTo post popular}} 会在当前上下文中查找“热门”属性,并生成一个指向具有该ID的模型的URL。虽然 {#linkTo post“popular”}} 会将字符串文字“热门”视为模型。
答案 0 :(得分:2)
似乎唯一的问题是你忘记将上下文传递给帖子/显示模板中的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>
这是一个工作小提琴,BTW我已经清理了一些,有些事情对我来说似乎毫无用处。