Ember.js 具有余烬数据的删除操作中的状态不正确

Ember.js 具有余烬数据的删除操作中的状态不正确,ember.js,ember-data,Ember.js,Ember Data,我正试图从一个索引控制器中整合一个我认为非常简单的余烬删除操作(基于这个例子:),我想我一定遗漏了什么 actions: { deleteZone: function (zone) { if (confirm("Are you sure you want to delete the zone?")) { var _this = this; zone.deleteRecord(); zone.save().then( functi

我正试图从一个索引控制器中整合一个我认为非常简单的余烬删除操作(基于这个例子:),我想我一定遗漏了什么

actions: {
  deleteZone: function (zone) {
    if (confirm("Are you sure you want to delete the zone?")) {
      var _this = this;

      zone.deleteRecord();

      zone.save().then(
        function () {
          _this.transitionToRoute('zones.index');
        },
        function (error) {
          zone.rollback();
        }
      );
    }
  }
}
当我试图删除具有相应依赖项的区域时,我遇到了麻烦。在本例中,服务器(Rails 4)抛出异常并返回以下JSON:

{"status":422,"message":"Cannot delete record because of dependent projects","errors":{}}
然而,虽然我相信服务器返回了正确的错误,但UI似乎在返回错误之前就失败了。如果我在catch函数中zone.rollback()之后的行中放置调试器,则会出现以下错误:

Attempted to handle event `becameInvalid` on <App.Zone:ember1276:6> while in state root.deleted.inFlight. Called with {}.
试图在处于root.deleted.inFlight状态时处理事件'becameInvalid'。用{}调用。

我运行的是ember 1.4.0-beta.1、ember data 1.0.0-beta.4(ActiveModelAdapter)和rails 4.0.1。如有任何建议,将不胜感激,谢谢

在回滚后手动转换到loaded.saved状态似乎可以解决问题:

zone.transitionTo('loaded.saved');
升级到最新的ember/ember数据并稍微修改JSON响应后,我现在能够使用传递到catch表达式的错误引用从JSON中提取错误消息

{"status":422,"message":"translation missing: en.Invalid zone","errors":{"base":["Cannot delete record because dependent projects exist"]}}
和余烬版本:

DEBUG: Ember      : 1.4.0-beta.1+canary.4d69bca7 ember.js?body=1:3307
DEBUG: Ember Data : 1.0.0-beta.5+canary.2e773365 ember.js?body=1:3307
DEBUG: Handlebars : 1.0.0 ember.js?body=1:3307
DEBUG: jQuery     : 1.10.2 

我也遇到了这个问题。运行
model.transitiono('loaded.saved')有助于避免抛出任何错误,但模型也会被破坏

如果要将模型保留在商店中,必须重新注入它,这看起来很奇怪,但很有效:

var model = this.get('model');
var store = model.store;
model.deleteRecord();
model.save().catch(function(err){
    model.transitionTo('loaded.saved');
    var payload = model.serialize({includeId: true});
    store.unloadRecord(model)
    store.pushPayload('nestedSet',{nested_set:payload});
});
我正在跑步:

DEBUG: -------------------------------
DEBUG: Ember      : 1.8.0-beta.1+canary.d6d4f01d
DEBUG: Ember Data : 1.0.0-beta.9
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery     : 1.11.1
DEBUG: -------------------------------
对于版本测试完整性,在
余烬数据#1.0.0-beta.7
上也会发生同样的情况

如果有人也遇到这种情况,希望能有所帮助