gpt4 book ai didi

ajax - 我在哪里可以在 Ember 中放置全局 ajax 错误处理?

转载 作者:行者123 更新时间:2023-12-04 15:56:53 25 4
gpt4 key购买 nike

在我的应用程序的适配器中,我根据 ajax 错误返回错误代码。我正在应用程序路由的错误方法中处理这些。如果我通过链接访问路线,这很有效。但是,如果我刷新路由或仅输入 URL,则不会调用我的应用程序的错误处理程序。有没有地方可以放置这个错误处理,保证每次都运行?我真的不想在每条 route 实现相同的“如果 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');
}
},
...

最佳答案

您可以制作一个应用程序适配器,然后从中扩展每个适配器,并使用 isInvalid 函数。

//app/adapters/application.js
import DS from 'ember-data';
import Ember from 'ember';

export default DS.JSONAPIAdapter.extend({

isInvalid(status, headers, payload){
if (status===401) {}
},

});

//app/adapters/anotherAdapter.js

import AppAdapter from 'yourapp/adapters/application';

export default AppAdapter.extend({

});

关于ajax - 我在哪里可以在 Ember 中放置全局 ajax 错误处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com