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