Ember.js 余烬数据句柄服务器错误
我在rails中使用的是ember数据0.13。我有一个basicinfo控制器来处理basicinfo模型更新。更新操作是: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'>
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()
,将标志返回到初始状态并继续转换