我一直在讨论编辑已经创建的子记录。我使用相同的形式部分创建和编辑。我可以使用该表单部分成功创建子记录,但如果我单击编辑,由于某种原因,编辑表单不显示或包含刚刚创建的记录,编辑表单基本上是空的。
要重现错误,请勿通过fixtureAdapter添加注释。如果记录在注释fixtureAdapter中,您将在单击编辑时看到该记录。事实上即使您使用fuxtures,您也只能编辑附加到父母的第一个子记录而不是第二个或第三个等。要重现它让没有任何评论夹具然后创建新记录,然后点击修改按钮,它将为空。要创建新记录,请点击帖子 - > 然后'帖子标题' - > 在底部 addComment-> 然后保存,您会看到该记录已创建,现在点击修改,它将为空。
这是 jsfiddle
editComment和CommentEditController
EmBlog.CommentEditController = Ember.ObjectController.extend({
needs: ['comment', 'postsShow'],
isEditing: false,
editComment: function() {
var post = this.get('controllers.postsShow.content');
console.log(post);
var postId = post.get('id');
console.log(postId);
comment = EmBlog.Comment.find(postId);
console.log(comment);
transaction = comment.get('store').transaction();
console.log(transaction);
console.log(this.get('content'));
this.set('content', comment);
transaction.add(this.get('content'));
this.transaction = transaction;
this.set('isEditing', true);
},
save: function(){
var comment = this.get('content');
comment.one('didUpdate', this, function() {
this.set('isEditing', false);
});
this.transaction.commit();
this.transaction = null;
console.log(this.get('content'));
}
});
把手部分模板
<script type="text/x-handlebars" data-template-name="comment/_form">
<form {{action save content on='submit'}}>
{{view Ember.TextArea valueBinding="body" placeholder="body"}}
<button type="submit"> save comment </button>
</form>
</script>
用于编辑现有记录的模板
<script type='text/x-handlebars' data-template-name='comment/edit'>
{{#if controller.isEditing}}
{{partial 'comment/form'}}
{{/if}}
<br/>
<div>
<button {{action editComment this}} {{bindAttr disabled="isEditing"}}>
Edit Comment</button>
</div>
</script>
您可以看到它与添加新记录的表单相同
<script type='text/x-handlebars' data-template-name='comment/new'>
{{#if controller.isAddingNew}}
{{partial 'comment/form'}}
{{/if}}
<br/>
<div>
<button {{action addComment}} {{bindAttr disabled="isAddingNew"}}>
Add Comment</button>
</div>