gpt4 book ai didi

ember.js - Ember 数据删除操作中的错误状态

转载 作者:行者123 更新时间:2023-12-02 01:54:30 29 4
gpt4 key购买 nike

我正在尝试将我认为非常简单的 ember 删除操作(基于此示例:http://discuss.emberjs.com/t/migrating-from-ember-data-0-13-to-1-0-0-beta-1-my-findings/2368)从索引 Controller 中组合起来,我想我一定遗漏了一些东西。

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 {}.

我在 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-data 并稍微修改 JSON 响应后,我现在可以使用传递给 catch 表达式的错误引用从 JSON 中提取错误消息。

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

和 ember 版本:

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

关于ember.js - Ember 数据删除操作中的错误状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20964265/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com