我在ember中处理以下情况: -
问题是,在处理路径B中的错误操作时,前一个路由并不总是路径A.它也可以来自其他路由。
我尝试了可能的解决方法,但它们对我没有用处: -
1)使用window.history.back() - 这会失败,因为路由B还没有输入,因为模型钩子承诺失败了。所以我得到了路线A的上一条路线。
2)使用this.controllerFor('application')。get('currentRouteName') - 这给出了加载路径(当从路径A转换到路径B时,中间路径'加载'被渲染)。
我可以使用查询Params的条件检查,但我觉得这不高效,因为我必须检查许多条件。
我只想返回调用路线B的路线。
如果我错过任何事情,请原谅我。
答案 0 :(得分:0)
示例项目:Twiddle
我重新打开Ember.Route
以捕获所有转换并将当前路由名称保存在应用程序控制器属性中。调用error action
时,我将转换到该属性中保存的路由。具有动态细分的路线需要额外处理。
另一种方法:
在你的router.js中,
var Router = Ember.Router.extend({
location: config.locationType,
didTransition : function(infos){
this._super(infos);
var appController = this.container.lookup('controller:application');
var crn = infos[infos.length - 1].name;
if(appController && crn!=='loading' && crn!=='error'){
Ember.set(appController,'myRouteName',crn);
}
}
});
我不确定是否有任何内置解决方案。