Javascript 访问Ember ErrorRoute中的错误模型
我正在尝试为我的Ember应用程序中的所有失败路由编写一个处理程序 文档似乎建议我可以在我的应用程序对象上创建一个ErrorRoute,当另一个路由失败时,它将自动转换为。如果路由失败的原因是由于身份验证问题(例如令牌超时),我想使用它将用户重定向到登录页面 我的问题是,在ErrorRoute中,我似乎没有任何方法访问失败的路由返回的错误。在将他们重定向到登录屏幕之前,我想确认这是一个身份验证错误,我不知道该如何做 以下是我为测试编写的内容:Javascript 访问Ember ErrorRoute中的错误模型,javascript,ember.js,Javascript,Ember.js,我正在尝试为我的Ember应用程序中的所有失败路由编写一个处理程序 文档似乎建议我可以在我的应用程序对象上创建一个ErrorRoute,当另一个路由失败时,它将自动转换为。如果路由失败的原因是由于身份验证问题(例如令牌超时),我想使用它将用户重定向到登录页面 我的问题是,在ErrorRoute中,我似乎没有任何方法访问失败的路由返回的错误。在将他们重定向到登录屏幕之前,我想确认这是一个身份验证错误,我不知道该如何做 以下是我为测试编写的内容: App.ErrorRoute = Ember.Rou
App.ErrorRoute = Ember.Route.extend({
activate: function() {
console.log("MODEL A", this.modelFor('error'));
setInterval(function() {
console.log("MODEL B", this.modelFor('error'));
}.bind(this), 1000);
}
});
当路由被激活时,控制台会记录未定义的模型
,因为它试图访问由于某种原因尚未设置的App.ErrorController的模型。第二秒钟后,MODEL B
控制台日志启动,错误模型已建立
如果我无法访问路由的
激活
方法中的错误,那么我在哪里可以访问它?大概我不应该在超时时包装我的逻辑。您可以在当前活动层次结构的任何路由中管理错误
通常,您在应用程序路由上设置错误处理程序以执行应用程序错误逻辑
App.AccountRoute = Ember.Route.extend({
afterModel: function() {
return new Em.RSVP.Promise(function(resolve, reject){
throw new AuthenticatedError('error message');
});
}
});
App.ApplicationRoute = Ember.Route.extend({
actions: {
error: function(error) {
if ( error instanceof AuthenticatedError ) {
this.transitionTo('login');
} else {
// if return true, the event will bubble and transition to error
return true;
}
}
}
});
将错误模型传递给错误路由的
renderTemplate(控制器、模型)
方法
如果您不关心在*.error
路由子状态上着陆,如果您仍要重定向,@ppcano就足够了。但有时您希望将所有错误处理封装在一个专用的错误路由对象中renderTemplate
然后就是你处理事情的地方
不过我同意,如果它的钩子有正确的(…)模型,那就太好了。这很有魅力,谢谢ppcano。我想知道为什么官方指南建议使用ErrorRoute重定向到登录屏幕。这对我来说更有意义。