2013-09-28 280 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, ''); 
};