有沒有方法清除Angular JS在通過routeProvider
加載特定視圖時存儲的歷史記錄?angularjs在加載視圖時清除歷史記錄
我正在使用angular創建一個公共安裝,並且歷史記錄將會建立很多,所以我想在主頁加載時清除它。
有沒有方法清除Angular JS在通過routeProvider
加載特定視圖時存儲的歷史記錄?angularjs在加載視圖時清除歷史記錄
我正在使用angular創建一個公共安裝,並且歷史記錄將會建立很多,所以我想在主頁加載時清除它。
內的控制器我增加了一個功能,改變視圖:
$scope.changeView = function(view) {
$location.path(view);
$location.replace();
}
然後在視圖中我添加了一個NG-點擊調用這個函數:
<div ng-click="changeView('/app/new_view')">
從角文檔$ location.replace()方法用於替換歷史堆棧中的最頂層視圖,而不是添加新視圖。
有哪些可以用來告訴大家,$位置服務是同步的瀏覽器接下來的時間,最後的歷史記錄,應改用替代創建一個新的$位置服務的特殊
replace
方法一。
。
$scope.$on('$viewContentLoaded', function(){
//view loaded do some stuff.
$location.replace(); //clear last history route
});
for(var a=0; a < $rootScope.$viewHistory.histories.root.stack.length; a++){
console.log(" for history remove " + a);
delete $rootScope.$viewHistory.histories.root.stack[a];
}
代碼是好的,但一個簡單的英文解釋不能傷害。請參閱[如何編寫好的答案?](http://stackoverflow.com/help/how-to-answer) – Jubobs
'$ rootScope。$ viewHistory'未定義。這是你添加到'$ rootScope'或angular提供的東西。 –
var dummyState = {app: 'resto'};
// set up history state
if (!$window.history.state) {
$window.history.pushState(dummyState, '');
}
// when history back
$window.onpopstate = function() {
console.log('window.onpopstate:url=', $window.location.href);
console.log('window.onpopstate:history.state=', $window.history.state);
// repopulate history state so we get the popstate event again
$window.history.pushState(dummyState, '');
};
不在此代碼做什麼。相反,它加載新視圖並將其添加到歷史記錄中,替換歷史記錄中的最後一個元素。 –