Javascript 使用浏览器后退时,角度$位置不更新
有人见过这种行为吗?关于它没有太多的提及,其他的帖子性质也不同。这似乎与有关浏览器行为的文档不一致 当用户Javascript 使用浏览器后退时,角度$位置不更新,javascript,angularjs,back-button,angular-routing,Javascript,Angularjs,Back Button,Angular Routing,有人见过这种行为吗?关于它没有太多的提及,其他的帖子性质也不同。这似乎与有关浏览器行为的文档不一致 当用户 更改地址栏 单击后退或前进按钮(或单击历史记录链接) 点击一个链接 $location# 发生了什么: -哈希更新() 单击“开始”-通过函数更新$location.$$path以更新哈希并加载新视图() 狡猾!用户单击浏览器中的“后退”按钮,哈希更新回,但调试告诉我$location。$$path仍然认为我们在$location。$$path=/guide-基于位置路径的逻辑不起作
- 更改地址栏李>
- 单击后退或前进按钮(或单击历史记录链接)李>
- 点击一个链接
- -哈希更新()
- 单击“开始”-通过函数更新$location.$$path以更新哈希并加载新视图()
- 狡猾!用户单击浏览器中的“后退”按钮,哈希更新回,但调试告诉我$location。$$path仍然认为我们在$location。$$path=/guide-基于位置路径的逻辑不起作用
// 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: '/'
});
我是如何解决这个问题的:
var pop = 0;
window.onpopstate = function(event) {
if (document.location.pathname === '/' && pop > 1) {
pop = 0;
document.location = 'http://localhost:9000/';
}
pop++;
};
当你说“页面随时加载”是什么意思?该页面只加载一次,然后使用路由器,根据路径创建和销毁控制器。您能提供发出事件的代码吗?正确,无论您是在根路径还是子路径/视图上,页面只加载一次$位置。$$path在一个函数中被省略,该函数在所有应用程序更改时都会触发,但在单击“周围”然后单击“浏览器后退”时不会更新。角度跟踪后退/前进按钮单击的时间和方式?