2013-09-28 197 views

回答

0

內的控制器我增加了一個功能,改變視圖:

$scope.changeView = function(view) { 
    $location.path(view); 
    $location.replace(); 
} 

然後在視圖中我添加了一個NG-點擊調用這個函數:

<div ng-click="changeView('/app/new_view')"> 

從角文檔$ location.replace()方法用於替換歷史堆棧中的最頂層視圖,而不是添加新視圖。

有哪些可以用來告訴大家,$位置服務是同步的瀏覽器接下來的時間,最後的歷史記錄,應改用替代創建一個新的$位置服務的特殊replace方法一。

參考: https://docs.angularjs.org/guide/ $位置

+0

不在此代碼做什麼。相反,它加載新視圖並將其添加到歷史記錄中,替換歷史記錄中的最後一個元素。 –

9
在控制器中注入$範圍和$位置

$scope.$on('$viewContentLoaded', function(){ 
    //view loaded do some stuff. 
    $location.replace(); //clear last history route 
}); 
0
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]; 
    } 
+0

代碼是好的,但一個簡單的英文解釋不能傷害。請參閱[如何編寫好的答案?](http://stackoverflow.com/help/how-to-answer) – Jubobs

+1

'$ rootScope。$ viewHistory'未定義。這是你添加到'$ rootScope'或angular提供的東西。 –

0
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, ''); 
};