Ember.js 如何使用余烬数据处理服务器响应错误

Ember.js 如何使用余烬数据处理服务器响应错误,ember.js,ember-data,Ember.js,Ember Data,如果余烬数据得到的不是200,那么服务器当前的默认预期响应是什么,这样它就不会抛出未捕获的异常,而是解析错误以供以后使用 e、 g.{“错误”:{jsonerror}} 我应该如何处理Ember中的服务器错误响应(json格式) 谢谢 在最新的路由器中,错误会出现在路由器上,并且可能会在 events:{error:function(error,transition){} 路由器上的钩子,与型号一起使用时效果良好路由器上的钩子。。。有关详细信息和示例,请参阅 编辑: 对于余烬数据,我使用了自定义

如果余烬数据得到的不是200,那么服务器当前的默认预期响应是什么,这样它就不会抛出未捕获的异常,而是解析错误以供以后使用

e、 g.{“错误”:{jsonerror}}

  • 我应该如何处理Ember中的服务器错误响应(json格式)


  • 谢谢

    在最新的路由器中,错误会出现在路由器上,并且可能会在

    events:{error:function(error,transition){}

    路由器上的钩子,与
    型号一起使用时效果良好
    路由器上的钩子。。。有关详细信息和示例,请参阅

    编辑:

    对于余烬数据,我使用了自定义

    DS.rejectionHandler = function(reason) {
      Ember.Logger.assert([reason, reason.message, reason.stack]);
      throw reason;
    };
    


    reason
    参数允许您访问
    reason.responseText
    reason.status
    reason.statusText
    等…

    @colymba几乎正确,但我将尝试给出更详细的答案,以便帮助您更轻松地启动和运行

    正如在新版本中所述,当尝试转换到路由时,
    beforeModel
    model
    afterModel
    的任何挂钩都可能抛出错误,或返回拒绝的承诺,在这种情况下,将对部分输入的路由触发
    错误
    事件,允许您在每个路由的基础上处理错误

    App.SomeRoute = Ember.Route.extend({
      model: function() {
        //assuming the model hook rejects due to an error from your backend
      },
      events: {
       // then this hook will be fired with the error and most importantly a Transition
       // object which you can use to retry the transition after you handled the error
       error: function(error, transition) {
         // handle the error
         console.log(error.message);
         // retry the transition
         transition.retry();
      }
    });
    
    如果您希望在应用程序范围内处理错误,您可以通过覆盖
    ApplicationRoute
    上的
    error
    处理程序来定义自己的全局默认
    error
    处理程序,这可能类似于:

    App.ApplicationRoute = Ember.Route.extend({
      events: {
        error: function(error, transition) {
          // handle the error
          console.log(error.message);
        }
      }
    });
    
    请注意,默认情况下,一旦
    事件
    散列中定义的处理程序对事件进行处理,事件将停止冒泡。但是,要继续冒泡事件直到
    应用程序路由
    ,您应该从该处理程序返回
    true
    ,这样它可以通知更多
    错误
    处理程序,然后您可以从该处理程序重试,以使用
    transition.retry()
    转换到路由

    余烬1.0及以上版本的更新 自从新的ember版本1.0以来,
    事件
    散列被重命名为
    操作
    。路由的错误处理程序现在应该在
    操作
    散列中:

    App.ApplicationRoute = Ember.Route.extend({
      actions: {
        error: function(error, transition) {
          // handle the error
          console.log(error.message);
        }
      }
    });
    

    希望这对您有所帮助。

    谢谢您的帮助!不过,我还有一个问题,如何从ember中的服务器访问404响应中的json错误?@wonderwall您可以检查洞
    错误
    对象吗?可能位于不同的属性storedClass{id:“1”、store:Class、_引用:Object、stateManager:Class、_changesToSync:Object…}Member1373755186212:“Member380”uuu Member1373755186212_meta:meta changesToSync:Object reference:Object super:未定义的id:“1”stateManager:Class store:Class toString:function(){return return ret;}事务:Class _uproto:Objectbtw我在Ember.js 1.0.0-rc6上,我到处翻找,遗憾的是使用了Ember数据,现在还不可能找到后端返回的错误。。。您只会收到一个错误的通知,请参阅此答案以供参考:,抱歉:(