使用AngularJS和routeparams的后退按钮循环

时间:2014-11-20 21:02:55

标签: javascript angularjs

这就是我希望实现的目标:

  1. 用户在url example.com/2
  2. 用户转到url example.com/2d< - 这是无效的网址
  3. 用户被发送到example.com/2d/404_error
  4. 用户点击浏览器"返回"按钮并登陆example.com/2
  5. 这是我遇到的问题

    1. 用户点击浏览器"返回"按钮并登陆 example.com/2d
    2. 用户再次自动转发到example.com/2d/404_error
    3. 我创建了无限的后退按钮循环:(

      在我的app.config中我有

      .when('/:gameId/404_error', {
          templateUrl: 'views/page_not_found.html'
      })
      
      .when('/:gameId', {
          controller: 'game',
          templateUrl: 'views/gamePage.html'
      })
      

      当没有提取数据时,app.factory会调用它

      }, function(response) {
          // something went wrong
          $location.path("/" + id + "/404_error");
          return $q.reject(response.data);
      });
      

      我已经尝试了"否则"方法,但使用routeparams使它无用。

      你可以在这里测试一下:

      http://vivule.ee/2< - 工作网址

      http://vivule.ee/2d< - not working url

2 个答案:

答案 0 :(得分:0)

window.history.go(-2)

此方法是纯javascript,您可以尝试在angularjs中使用$ window.history.go(-2)

好作品!

答案 1 :(得分:0)

使用ng-switch和ng-include

修复了它

在控制器中,当未加载数据时,我添加了:

$scope.page_not_found = true;

我添加的模板:

<div ng-switch on="page_not_found">
   <div ng-if="page_not_found" ng-include="'views/page_not_found.html'"></div>
</div>

一切都发生在一个.html模板中。我隐藏主要内容并使用ng-include导入404页面,此解决方案似乎也更快。