Ember.js emberjs和ember数据-通过表单提交创建记录返回未定义

Ember.js emberjs和ember数据-通过表单提交创建记录返回未定义,ember.js,ember-data,Ember.js,Ember Data,我有这个。除了我不能通过提交评论的表单来创建新评论之外,一切都正常。当我提交表单时,控制台显示undefined。我希望获得的是抓住一个现有的帖子,然后创建一条属于该帖子的评论。这就是事情的流程,用户将单击帖子,然后单击特定的帖子标题来显示它,然后单击添加评论来对该帖子进行评论。重要的是要注意,此时,单击AddComment按钮将返回undefined 代码的相关部分包含addComment和save方法 **“把手”模板中的相关部分 <script type='text/x-handle

我有这个。除了我不能通过提交评论的表单来创建新评论之外,一切都正常。当我提交表单时,控制台显示undefined。我希望获得的是抓住一个现有的帖子,然后创建一条属于该帖子的评论。这就是事情的流程,用户将单击帖子,然后单击特定的帖子标题来显示它,然后单击添加评论来对该帖子进行评论。重要的是要注意,此时,单击AddComment按钮将返回undefined

代码的相关部分包含addComment和save方法

**“把手”模板中的相关部分

<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>
使用render通过“发布/显示模板”提交评论表单

您需要使用以下方法创建注释记录:

var comment = EmBlog.Comment.createRecord()

您可以在用户填写表单之前创建记录,并将值绑定到该已创建的记录,仅在用户单击“保存”时提交,也可以将文本区域绑定到控制器属性,并在用户单击“保存”后创建和提交记录

下面是第二种方法的示例。

您需要使用以下方法创建注释记录:

var comment = EmBlog.Comment.createRecord()

您可以在用户填写表单之前创建记录,并将值绑定到该已创建的记录,仅在用户单击“保存”时提交,也可以将文本区域绑定到控制器属性,并在用户单击“保存”后创建和提交记录


下面是第二种方法的要点。

很棒的帖子。就一句话。对于最新的库,deletePost不起作用

未捕获的TypeError:无法调用未定义的方法“deleteRecord”

解决方案:

destroyPost: function (post) {
  post.one('didDelete', this, function () {
    this.transitionTo('posts.index');
  });
  post.deleteRecord();
  post.get('transaction').commit();
}

棒极了。就一句话。对于最新的库,deletePost不起作用

未捕获的TypeError:无法调用未定义的方法“deleteRecord”

解决方案:

destroyPost: function (post) {
  post.one('didDelete', this, function () {
    this.transitionTo('posts.index');
  });
  post.deleteRecord();
  post.get('transaction').commit();
}

你是个绅士学者。非常感谢您在我的emberjs之旅中解决了我的这个痛点。您已经做得够多了,但如果您还有几分钟的时间,只是为了学习,您知道为什么在创建新注释后单击“后退”按钮会显示错误:必须为装置定义id属性{id:0,title:first title,body:first body,comments:[ember423]}即使设备中已经定义了id属性。非常感谢。也许您不能拥有id:“0”,请尝试id:“1”非常正确。将其更改为1将删除错误。非常感谢,祝你愉快,你是一位绅士学者。非常感谢您在我的emberjs之旅中解决了我的这个痛点。您已经做得够多了,但如果您还有几分钟的时间,只是为了学习,您知道为什么在创建新注释后单击“后退”按钮会显示错误:必须为装置定义id属性{id:0,title:first title,body:first body,comments:[ember423]}即使设备中已经定义了id属性。非常感谢。也许您不能拥有id:“0”,请尝试id:“1”非常正确。将其更改为1将删除错误。非常感谢,祝你度过愉快的一天
destroyPost: function (post) {
  post.one('didDelete', this, function () {
    this.transitionTo('posts.index');
  });
  post.deleteRecord();
  post.get('transaction').commit();
}