在我的应用程序的适配器中,我返回基于ajax错误的错误代码。我正在处理这些应用程序路由的错误方法。如果我通过链接访问路线,这非常有效。但是,如果我刷新路线或只输入URL,我的应用程序的错误处理程序不会被调用。有没有一个地方我可以把这个错误处理,将保证每次运行?我真的不想在每条路线上实施相同的“如果401,显示登录”代码。我在哪里可以把全局ajax错误处理在Ember中?
路线/ application.js中:
export default Ember.Route.extend({
actions: {
error: function(reason) {
if (reason === 401) {
alert('401');
this.send('showLogin');
}
},
适配器/ application.js中:
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
'namespace': '',
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR && jqXHR.status === 401) {
return 401;
}
return error;
}
});
编辑:
上面的代码对我来说几乎奏效。我碰到的主要问题是this.send('showLogin')在刷新或点击URL时未被捕获。此更改为transitionTo的伟大工程:
import Ember from 'ember';
export default Ember.Route.extend(ApplicationRouteMixin, {
actions: {
error: function(reason) {
if (reason === 401) {
this.transitionTo('login');
}
},
...
我也有这个问题,找不到一个全球性的解决方案。你有没有解决它?我发布了一个类似的问题:http://stackoverflow.com/questions/29926638/ember-handling-401s-revisited-in-2015 – Confused 2015-04-30 19:39:28
是的,我终于搞定了。看到上面的编辑。 – Dennis 2015-05-01 19:07:20