我有 jsfiddle 。除了通过提交评论表单我无法创建新评论之外,一切都有效。当我提交表单时,控制台显示未定义。我希望获得的是获取现有帖子,然后创建属于该帖子的评论。这样一来,用户将点击发布,然后点击特定的帖子标题进行展示,然后点击添加评论到评论该帖子。请务必注意,目前点击添加评论按钮将返回未定义。
使用 addComment 和保存方法的代码的相关部分。
EmBlog.CommentNewController = Em.ObjectController.extend({
needs: ['postsShow'],
isAddingNew: false,
addComment: function(body){
post = this.get('controllers.postsShow.model');
store = post.get('transaction');
store.createRecord(EmBlog.Comment, {body: body});
this.set('isAddingNew', true);
},
save: function(){
console.log(this.store.commit());
}
});
**车把模板的相关部分
<script type='text/x-handlebars' data-template-name='comment/new'>
{{#if controller.isAddingNew}}
<form {{action save on='submit'}}>
{{view Ember.TextArea valueBinding="body" placeholder="body"}}
<button type="submit"> save comment </button>
</form>
{{/if}}
<br/>
<div>
<button {{action addComment}} {{bindAttr disabled="isAddingNew"}}>
Add Comment
</button>
</div>
</script>
评论表单通过'posts / show template'使用渲染
提交 <script type="text/x-handlebars" data-template-name="posts/show">
<p> Comments</p>
{{render 'comment/new' comments}}
</script>
答案 0 :(得分:4)
您需要使用以下方式创建Comment
记录:
var comment = EmBlog.Comment.createRecord()
或
var transaction = this.get('store').transaction();
var comment = transaction.createRecord(EmBlog.Comment);
您可以在用户填写表单之前创建记录,并将值绑定到该创建的记录,并仅在用户单击save时提交,或者您可以将文本区域绑定到控制器属性,并创建和提交用户点击保存后记录。
这是第二种方法的updated fiddle。
答案 1 :(得分:1)
很棒的帖子。只有一个评论。使用latests库,deletePost不起作用......
未捕获的TypeError:无法调用未定义的方法'deleteRecord'
解决方案:
destroyPost: function (post) {
post.one('didDelete', this, function () {
this.transitionTo('posts.index');
});
post.deleteRecord();
post.get('transaction').commit();
}