2016-01-14 36 views
1

有沒有人跑過這種行爲?關於它並沒有太多提及,其他職位本質上是不同的。這似乎與關於瀏覽器行爲的文檔不一致。

與同步,當用戶

  • 更改地址欄中的瀏覽器的URL。
  • 點擊後退或前進按鈕(或點擊歷史鏈接)。
  • 點擊鏈接。

https://docs.angularjs.org/api/ng/service/ $ location#!

會發生什麼:

這是一個觀察者對位置,以幫助調試:

// listen for the event in the relevant $scope 
$rootScope.$on('locationChange', function (event, data) { 
    console.log(data); 
}); 

//Call locationChange watch at anytime the page is loaded 
$scope.$emit('locationChange', $location.$$path); 

這裏的路由:

$routeProvider 
    .when('/guide', { 
     templateUrl: 'views/guide.html', 
     controller: 'GuideController', 
     controllerAs: 'guide' 
    }) 
    .when('/', { 
     templateUrl: 'views/about.html', 
     controller: 'AboutCtrl', 
     controllerAs: 'about' 
    }) 
    .otherwise({ 
     redirectTo: '/' 
    }); 
+0

你是什麼意思當你說「隨時加載頁面」?該頁面只加載一次,然後用路由器根據路徑創建和銷燬控制器。你能提供你發出事件的代碼嗎? –

+0

正確,頁面只加載一次,無論您是在根區還是小孩路線/視圖。 $ location。$$ path在所有應用程序更改觸發的函數中被省略,但在您點擊時單擊瀏覽器並不會更新。 Angular何時以及如何跟蹤後退/前進按鈕的點擊? – vars

回答

1

我如何解決這樣的:

var pop = 0; 

window.onpopstate = function(event) { 
    if (document.location.pathname === '/' && pop > 1) { 
     pop = 0; 
     document.location = 'http://localhost:9000/'; 
    } 
    pop++; 
}; 
相關問題