【问题标题】:Ember data Rest adapter error handling not workingEmber 数据 Rest 适配器错误处理不起作用
【发布时间】:2015-07-29 23:29:15
【问题描述】:

我有一个基本的 Ember 应用程序,我正在尝试处理保存时的验证错误(模型正在使用 REST 适配器)。在我正在做的路线中:

task.save().then(
                function() {alert("success");},
                function() {alert("fail");}
                ).catch(
                    function() {alert("catch error");}
                    );

当记录有效时,我会收到“成功”警报,但当记录无效时,我不会收到“失败”警报或“捕获错误”。在控制台中我得到:

POST http://localhost:8080/api/tasks 422 (Unprocessable Entity)
Error: The adapter rejected the commit because it was invalid

来自 api 的响应如下所示:

{"errors":{"name":["can't be blank"],"parent_task":[]}}

我使用的是 Ember Data 1.13。

【问题讨论】:

    标签: ember.js error-handling ember-data ember-cli


    【解决方案1】:

    您需要扩展您的适配器来处理错误,REST 适配器不会为您执行此操作(只有 Active Model 之一)

    类似这样的:

    App.ApplicationAdapter = DS.RESTAdapter.extend({
    
      ajaxError: function(jqXHR) {
        var error = this._super(jqXHR);
        if (jqXHR && jqXHR.status === 422) {
          var response = Ember.$.parseJSON(jqXHR.responseText),
              errors = {};
    
          if (response.errors !== undefined) {
            var jsonErrors = response.errors;
            Ember.EnumerableUtils.forEach(Ember.keys(jsonErrors), function(key) {
              errors[Ember.String.camelize(key)] = jsonErrors[key];
            });
          }
          return new DS.InvalidError(errors);
        } else {
          return error;
        }
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2015-12-23
      相关资源
      最近更新 更多