在Ember ErrorRoute中访问错误模型
Accessing the error model in Ember ErrorRoute
我试图在我的Ember应用程序中为所有失败的路由编写处理程序。
这里的文档似乎建议我可以在我的App对象上创建一个ErrorRoute,当在另一个路由上路由失败时,它将自动转换为。如果路由失败的原因是由于身份验证问题(如令牌超时),我想使用它将用户重定向到登录页面。
我遇到的问题是,在ErrorRoute中,我似乎没有任何方法来访问失败的路由返回的错误。我想检查一下,确定这是一个身份验证错误之前重定向到登录屏幕,我不知道如何做到这一点。
下面是我为测试写的代码:
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);
}
});
当路由被激活时,控制台记录MODEL A undefined
,因为它试图访问由于某种原因尚未设置的App.ErrorController的模型。一秒钟后,MODEL B
控制台日志被触发,错误模型已经建立。
如果我无法访问路由的activate
方法中的错误,那么我在哪里可以访问它?大概我不应该把我的逻辑包装在超时
您可以在当前活动层次结构的任何路由中管理此错误。
通常,你在应用程序路由上设置错误处理程序来执行你的应用程序错误逻辑。
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;
}
}
}
});
http://emberjs.jsbin.com/cisur/1/edit 将错误模型传递给错误路由的renderTemplate(controller, model)
方法。
如果你不关心降落在*.error
路由子状态,如果你无论如何都要重定向,@ppcano的答案是足够的。但有时你想把所有的错误处理封装在一个专用的错误路由对象中。renderTemplate
是你处理事情的地方。
我同意,如果它的钩子有正确的modelFor(...)
可用,那就太好了。
相关文章:
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- JavaScript 变量访问错误
- 如何访问rails模型中CoffeeScript中创建的变量
- AngularJS从另一个数据模型访问数据模型
- 使用AJAX读取一个简单的文本文件.打开函数时出现拒绝访问错误
- 访问主干模型中的父上下文
- 如何在 3 次登录尝试后重新加载页面并出现 401 未经授权的访问错误?在 asp.net
- 间歇性 HTTP 403 禁止访问错误调用相同的 Ajax 代码
- 尝试从 Jasmine 访问主干模型时出现参考错误
- 使用 Ember js 从非嵌套路由访问路由模型
- 主干:访问集合模型
- 角度.js - 如何在ng-repeat中访问ng模型的值
- 如何通过chrome控制台访问主干模型
- Ng包括:访问儿童模型
- 从视图中的Javascript访问MVC3模型属性
- 用JavaScript访问Struts模型's date对象
- 从Javascript/JQuery动态访问Java模型列表
- 主干子视图事件没有触发,访问这个.模型丢失
- 使用java脚本访问MVC模型
- 在Ember ErrorRoute中访问错误模型