任何想法处理401错误?灰烬 - 数据处理401的
在应用程序初始化程序中,我推迟准备并通过ember-data获取当前用户。如果我收到一个401应用程序死亡,并变得无法使用。我想处理这个错误,然后提前回复。我似乎无法找到解决方法。任何信息,将不胜感激!
要点在这里:https://gist.github.com/unknpwn/6126462
我注意到有一个similar topic here,但它似乎是过时的。
任何想法处理401错误?灰烬 - 数据处理401的
在应用程序初始化程序中,我推迟准备并通过ember-data获取当前用户。如果我收到一个401应用程序死亡,并变得无法使用。我想处理这个错误,然后提前回复。我似乎无法找到解决方法。任何信息,将不胜感激!
要点在这里:https://gist.github.com/unknpwn/6126462
我注意到有一个similar topic here,但它似乎是过时的。
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
}
}
});
上一个答案已过时。在当前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
}
}
});
灰烬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
}
}
});
有了这些动作处理程序错误将很好地泡在主应用程序的路线,如果你不前,你的路线停止。
太棒了!模型存在之前我不知道。尽管我尝试从我的API获取经过身份验证的用户,然后向用户显示登录表单以代替内容,但仍然遇到了捕获预期的401错误的问题。当401回来时,错误功能似乎没有被击中。那里有任何想法? – bmherold
有一些错误承诺会吞噬一些异常,这可能是一个。尝试在服务器上引发500错误,看看是否触发处理程序。 –
从Ember Data v1.0.0-b3开始,这是可行的(附加说明'events'应该重命名为'actions',因为前者已被弃用。 –