【问题标题】:ember-data handle server errorember-data 处理服务器错误
【发布时间】:2013-07-16 04:05:33
【问题描述】:

我正在使用带有导轨的 ember-data 0.13。我有一个基本信息控制器来处理基本信息模型更新。更新操作是:

  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>

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

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    Ember 数据在处理错误时似乎有点问题。

    我建议你这样做:

    update: ->
      @content.rollback() if @content.get('isError')
      @content.save().then ((success_responce)->
        <handle success responce here>
      ), (failure)->
        <handle failure here>
    

    在我看来,更好的解决方案是禁用更新按钮,基于 record.isError 标志。

    另一件要考虑的事情是当服务器返回错误并且您想要转换到另一个路由(例如使用取消按钮)时该怎么办。 Ember 数据会禁止你,抱怨记录有 inFlight 属性。 在这种情况下,您可以再次调用 record.rollback() 将标志返回到初始状态并继续您的转换。

    【讨论】:

      猜你喜欢
      • 2015-10-26
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多