1
有没有人跑过这种行为?关于它并没有太多提及,其他职位本质上是不同的。这似乎与关于浏览器行为的文档不一致。
与同步,当用户
- 更改地址栏中的浏览器的URL。
- 点击后退或前进按钮(或点击历史链接)。
- 点击链接。
https://docs.angularjs.org/api/ng/service/ $ location#!
会发生什么:
- Load page - 哈希更新(http://localhost:9000/#/)
- 点击 '开始' - 更新$位置$$路径通过功能更新哈希和加载新视图(http://localhost:9000/#/guide)
- 整蛊!用户点击浏览器中的后退按钮,哈希更新回到http://localhost:9000/#/,但调试告诉我$位置。$$路径仍认为我们位于$位置。$$ 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: '/'
});
你是什么意思当你说“随时加载页面”?该页面只加载一次,然后用路由器根据路径创建和销毁控制器。你能提供你发出事件的代码吗? –
正确,页面只加载一次,无论您是在根区还是小孩路线/视图。 $ location。$$ path在所有应用程序更改触发的函数中被省略,但在您点击时单击浏览器并不会更新。 Angular何时以及如何跟踪后退/前进按钮的点击? – vars