为什么在刷新时路由器会重定向到另一条路由?

时间:2016-03-11 11:24:12

标签: ember.js

我有一个使用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页面保持为独立路由,当用户点击该页面上的刷新时,它应该继续存在于同一页面而不是重定向他到用户/调查页面。

1 个答案:

答案 0 :(得分:2)

我认为问题在于您覆盖 takesurvey路径的路径。

将您的路由器更改为如下所示,并告诉我这是否适合您:

this.route('user', function() {
  this.route('surveys');
  this.route('takesurvey', {path: 'takesurvey/:survey_id', resetNamespace: true}); 
});