【发布时间】:2015-04-05 20:01:36
【问题描述】:
在我的应用程序适配器中,我根据 ajax 错误返回错误代码。我在应用程序路由的错误方法中处理这些。如果我通过链接访问路由,这将非常有用。但是,如果我刷新路由或只是键入 URL,则不会调用我的应用程序的错误处理程序。有没有一个地方可以让我保证每次都运行这个错误处理?我真的不想在每条路由中实现相同的“如果 401,则显示登录”代码。
路由/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');
}
},
...
【问题讨论】:
-
我也有这个问题,找不到全局解决方案。你有没有得到解决?我发布了一个类似的问题:stackoverflow.com/questions/29926638/…
-
是的,我终于让它工作了。请参阅上面的编辑。
标签: ajax ember-data ember-cli