在我的應用程序的適配器中,我返回基於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