2014-11-20 64 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