Den*_*nis 6 ajax ember-data ember-cli
在我的应用程序的适配器中,我将根据ajax错误返回错误代码.我正在应用程序路由的错误方法中处理这些.如果我通过link-to访问路由,这非常有用.但是,如果我刷新路径或只输入URL,则不会调用我的应用程序的错误处理程序.有没有一个地方我可以把这个错误处理保证每次运行?我真的不想在每一条路线中实现相同的"if 401,show login"代码.
路线/ application.js中:
export default Ember.Route.extend({
actions: {
error: function(reason) {
if (reason === 401) {
alert('401');
this.send('showLogin');
}
},
Run Code Online (Sandbox Code Playgroud)
适配器/ 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;
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
上面的代码几乎对我有用.我点击的主要问题是在刷新或点击URL时没有捕到this.send('showLogin').将此更改为转换可以很好地工作:
import Ember from 'ember';
export default Ember.Route.extend(ApplicationRouteMixin, {
actions: {
error: function(reason) {
if (reason === 401) {
this.transitionTo('login');
}
},
...
Run Code Online (Sandbox Code Playgroud)
如果您使用RSVP承诺,那么
Ember.RSVP.on('error', function(error) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
或者如果您使用纯 jQuery xhr
$(document).ajaxError(function(evt, jqXHR) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2595 次 |
| 最近记录: |