我有一个使用Ember JS,Firebase和Torii Adapter构建的调查应用程序,用于身份验证和会话管理。我在刷新时试图了解特定路线的行为(称为' takeurvey'路线)。
路由器地图(router.js)中的相关代码如下:
this.route('user', function() {
this.route('surveys');
//the code below works but on refresh,
//nests the takesurvey page under user
this.route('takesurvey', {path: ':survey_id', resetNamespace: true});
});
//alternatively, uncommenting the line below redirects to user.surveys on refresh of page
//this.route('takesurvey', {path: ':survey_id'});
这是两个场景的问题(也在上面的代码中描述为注释):
场景1:将调查页保留为独立路线
在这种情况下,当用户导航到http://<application name> /survey_id
时,拍摄调查页面会正常加载。但是在刷新页面时,用户需要返回user/surveys
页面。
场景2:接收路线嵌套在用户路线下方。
在这种情况下,当用户导航到http://<application name> /user/survey_id
时,调查会正常加载,并且刷新也会按预期工作。
所以我的问题是,为什么会发生这种情况?
理想情况下,根据当前要求,我希望将takeurvey页面保持为独立路由,当用户点击该页面上的刷新时,它应该继续存在于同一页面而不是重定向他到用户/调查页面。
答案 0 :(得分:2)
我认为问题在于您覆盖 takesurvey
路径的路径。
将您的路由器更改为如下所示,并告诉我这是否适合您:
this.route('user', function() {
this.route('surveys');
this.route('takesurvey', {path: 'takesurvey/:survey_id', resetNamespace: true});
});