关于处理 401 错误的任何想法?
在应用程序初始化程序中,我推迟准备并通过 ember-data 获取当前用户。如果我收到 401,应用程序就会死掉并变得无法使用。我想处理这个错误,然后提前准备。我似乎找不到解决方法。任何信息,将不胜感激!
要点在这里:https ://gist.github.com/unknpwn/6126462
我注意到这里有一个类似的主题,但它似乎已经过时了。
关于处理 401 错误的任何想法?
在应用程序初始化程序中,我推迟准备并通过 ember-data 获取当前用户。如果我收到 401,应用程序就会死掉并变得无法使用。我想处理这个错误,然后提前准备。我似乎找不到解决方法。任何信息,将不胜感激!
要点在这里:https ://gist.github.com/unknpwn/6126462
我注意到这里有一个类似的主题,但它似乎已经过时了。
之前的答案已经过时了。在当前的 Ember 版本 (1+)events
中已弃用,您应该使用actions
对象(而不是函数)。
灰烬示例:
App.ApplicationRoute = Ember.Route.extend({
actions: {
error: function(err) {
// error handler called in case of an error.
// show the error message to user here
// or transition to another route
}
}
});
Ember CLI 示例:
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
error: function(err) {
// error handler called in case of an error.
// show the error message to user here
// or transition to another route
}
}
});
使用这些操作处理程序,如果您之前没有在路由中停止它,错误将很好地冒泡到主应用程序路由。
Application.initializer
不是放置这个逻辑的正确位置。它是同步的,它的目的是做一些事情,比如将自定义对象添加到 IOC 容器等。这段代码更model
适合ApplicationRoute
.
App.ApplicationRoute = Ember.Route.extend({
beforeModel: function() {
return App.User.find({ filter: "authenticated" });
},
setupController: function(controller, model) {
controller.set('loggedIn', true);
controller.set('currentUser', model);// or some property of that model
},
events: function() {
error: function(err) {
// error handler called in case of an error.
// show the error message to user here
// or transition to another route
}
}
});