Ember.js 余烬数据句柄服务器错误

Ember.js 余烬数据句柄服务器错误,ember.js,ember-data,Ember.js,Ember Data,我在rails中使用的是ember数据0.13。我有一个basicinfo控制器来处理basicinfo模型更新。更新操作是: update: -> @content.save() @content.on('becameInvalid', (response) -> alert Em.inspect(response.errors) ) basicinfo.hbs: <aside class='basicinfo-aside'>

我在rails中使用的是ember数据0.13。我有一个basicinfo控制器来处理basicinfo模型更新。更新操作是:

  update: ->
    @content.save()
    @content.on('becameInvalid', (response) ->
      alert Em.inspect(response.errors)
    )
basicinfo.hbs:

<aside class='basicinfo-aside'>
  {{#if inEditModel}}
<div class='control-group'>
  <label for='basicinfo_about_me'>{{t '.basicinfo.edit.about_me'}}</label>

  <div class='controls'>
    {{view Em.TextArea id='basicinfo_about_me'
                       class='basicinfo-about-me'
                       name='basicinfo[about_me]'
                       valueBinding='aboutMe'}}
  </div>
</div>

<div class='action-group'>
  <span {{bindAttr class=':about-me-length-remain
                          hasAboutMeLengthRemain:muted:text-error'}}>
    {{aboutMeLengthRemain}}
  </span>

  <button class='btn-cancel btn' {{action cancel}}>
    {{t '.basicinfo.edit.cancel'}}
  </button>

  <button class='btn-update btn btn-primary' {{action update}}>
    {{t '.basicinfo.edit.update'}}
  </button>
</div>

  {{/if}}
</aside>

<div class='basicinfo-inner'>
  {{#unless inEditModel}}
    <h5>
      {{t '.basicinfo.about_me'}}

      {{#if canManage}}
        <a class='lnk-edit' href='#' {{action edit}}>
          <i class='icon-edit'></i>
        </a>
      {{/if}}
    </h5>

    <p class='about-me'>{{aboutMe}}</p>
  {{/unless}}
</div>

{{/if}

{{aboutMe}

{{/除非}

当我第一次单击带有无效数据的更新按钮时,错误会正确显示,但如果我不修复错误并再次按下更新按钮,则Ember会显示:“未捕获错误:在状态为rootState.loaded.updated.invalid的情况下尝试处理事件
willCommit
on。调用时未定义”如何解决,谢谢

在处理错误时,余烬数据似乎有点问题

我建议您采取以下措施:

update: ->
  @content.rollback() if @content.get('isError')
  @content.save().then ((success_responce)->
    <handle success responce here>
  ), (failure)->
    <handle failure here>
更新:->
@如果@content.get('isError'),则返回content.rollback()
@content.save()。然后((成功响应)->
),(失败)->
在我看来,一个更好的解决方案是根据
record.isError
标志禁用更新按钮

另一个要考虑的事情是当服务器返回错误时要做什么,并且想转换到另一条路径(比如取消按钮)。 余烬数据将禁止您访问,因为您会抱怨记录中有未发布的消息。 在这种情况下,您可以再次调用

record.rollback()
,将标志返回到初始状态并继续转换