2014-11-20 52 views
0

这里就是我想达到的目的:与AngularJS和routeparams后退按钮循环

  1. 用户在URL example.com/2
  2. 用户进入example.com/2d网址< - 这是无效的网址
  3. 用户被fowarded到example.com/2d/404_error上example.com/2

这里是

  • 用户点击浏览器“返回”按钮和土地我有一个问题

  • 用户点击浏览器“后退”按钮和上土地example.com/2d
  • 用户再次自动转发给example.com/2d/404_error
  • 我创造无限后退按钮循环:(

    在我的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 < - 工作URL

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

    回答

    0

    与NG-开关和固定它NG-包括

    在控制器中,当不加载数据I中添加:

    $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页面,这个解决方案似乎也更快。

    0

    window.history.go(-2)

    这种方法纯javascipt你可以尝试使用$ window.history.go(-2)in angularjs

    Go od工作!

    +1

    嗯,如果谷歌的用户偶然发现404页面呢?他们不会被扔回2页吗? – yodalr 2014-11-20 22:35:04

    +0

    是的,window.history跟着你的流.. :)但你尝试使用会话存储来创建你的历史,并用它来管理后退按钮 – GianArb 2014-11-20 22:37:04

    +0

    是不是有角度的做法呢? – yodalr 2014-11-21 23:13:30