我在angularJS控制器中初始化一个谷歌地图,并为地图事件添加一个监听器
google.maps.event.addListener(map, 'dragend', MapMoveAround);
......
function MapMoveAround() {
console.log($location.url());
$location.path('/other_path');
console.log($location.url());
}
当我触发谷歌地图事件时,控制台显示网址已更改,但我留在旧页面。如果我将$ location.path('/ other_path')更改为
window.location.replace('/#/other_path')
它将进入新页面,但“后退”按钮将无效。
任何人都可以为它提供AngularJS解决方案吗?
答案 0 :(得分:1)
通过事件运行角度代码不会运行摘要周期,在这种情况下,您需要使用$scope.$apply()
手动运行它才能使$location
更改工作。
<强>代码强>
google.maps.event.addListener(map, 'dragend', MapMoveAround);
......
function MapMoveAround() {
console.log($location.url());
$scope.$apply(function(){
$location.path('/other_path');
})
console.log($location.url());
}
答案 1 :(得分:0)
以下代码也适用于......
google.maps.event.addListener(map, 'dragend', MapMoveAround);
......
function MapMoveAround() {
console.log($location.url());
$timeout(function() {
$location.path('/other_path');
}, 500)
console.log($location.url());
}