回滚删除以处理Ember.js中的服务器错误
我们有一个Ember.js应用程序,它使用Ember数据。我们正努力做到以下几点:回滚删除以处理Ember.js中的服务器错误,ember.js,ember-data,Ember.js,Ember Data,我们有一个Ember.js应用程序,它使用Ember数据。我们正努力做到以下几点: 删除记录 如果出现服务器错误(由于应用程序可能处于无法删除记录的“锁定”状态),请将记录回滚到以前的状态,提示用户解锁应用程序,然后继续 如果没有服务器错误,请继续正常操作 我们发现这是行不通的 object.destroyRecord().then -> # handle success , (reason)-> object.rollback() # prompt for the un
object.destroyRecord().then ->
# handle success
, (reason)->
object.rollback()
# prompt for the unlock
在这两种情况下,我们都会看到如下错误:
Error: Assertion Failed: calling set on destroyed object
但不清楚设置后如何删除isDestroyed
状态
一般来说,在这两种情况下,一旦调用DistroyRecord,即使出现服务器错误,也无法将更改回滚到预删除状态一次。尝试,然后保存。文档明确声明,这允许您在发生错误时回滚
object.deleteRecord()
object.save().then( ->
# handle success
, (reason) ->
object.rollback()
)
我发现需要将回滚调用放入becameError()函数中
// Overwrite default destroyRecord
destroyRecord: function () {
this.deleteRecord();
this.save().then(
function (){
//Success
},
function () {
//Failure
}
);
},
becameError: function (item) {
this.rollback();
}
该项将从视图中消失,直到服务器返回错误,然后神奇地重新出现 我也试过了,结果也一样。我们可以在调用save之前回滚删除。但是一旦调用了save,服务器返回了一个错误,似乎就没有一个简单的方法来恢复这个对象了。也许这是值得澄清的一个问题,在灰烬数据回购?没有使用灰烬数据在一段时间,因为我感到失望,但我看到了这个线程在论坛上。不确定您是否看过,或者是否与您的问题相关,但可能值得一读: