有没有方法清除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, '');
};
不在此代码做什么。相反,它加载新视图并将其添加到历史记录中,替换历史记录中的最后一个元素。 –