1

在 Ember 1.13.3 中处理服务器端错误的正确方法是什么?

我正在使用 RESTAdapter 并尝试使用/不使用此代码:

handleResponse: function(status, headers, payload) {
if (payload.errors) {
  return new DS.InvalidError(payload.errors);
}
return this._super(...arguments);

}

我的服务器使用这样的 JSON 返回 422:

            {
                errors: [
                    {
                        source: {pointer: 'data'},
                        detail: 'Not saved'
                    }
                ]
            }

在我的路线中,我以这种方式保存模型:

job.save().then(function() {
    console.log('OK');
  }).catch(function(err) {
    console.log('Error: ', err, ' Model ', job.get('isError'));
  });

如果出现错误,流程将进入 catch 块,并且 'err' 是预期的 InvalidError 对象,但 job.get('isError') 返回 false。

现在我不知道如何在组件 UI 中获取错误,因为模型属性 isError 总是错误的。

谢谢

4

1 回答 1

1

你错过了isError

如果为 true,则适配器报告由于服务器端验证错误以外的任何原因,它无法将本地更改保存到后端。

你应该检查的是isValid

当适配器未报告任何服务器端验证失败时,记录将处于有效状态。

于 2015-08-04T11:17:50.743 回答