首先,我将infoWindow的布尔值设置为false:
$scope.infoWindow = false;
然后我有一个谷歌地图监听器,如此点击:
google.maps.event.addListener(circle, 'click', function(event) {
$scope.toggleInfoWindow();
});
正在解雇此功能:
$scope.toggleInfoWindow = function() {
$scope.infoWindow = !$scope.infoWindow;
}
最后我的模板中有以下内容:
<div ng-show="infoWindow"><h1>Info Window</h1></div>
只要有人点击圈子, 就会显示div,但它不会对 $ scope.infoWindow 中的更改做出反应。我确定它也在改变,因为我在使用console.log()点击时记录了它的值,它确实从“false”变为“true”等。
那么这里发生了什么?
答案 0 :(得分:3)
你需要在角度以外的任何时候使用$ scope。$ apply()。正如您所提到的那样,您正在使用谷歌地图,因此需要在那里添加该行。
google.maps.event.addListener(circle, 'click', function(event) {
$scope.toggleInfoWindow();
$scope.$apply();
});
以下是关于它的文档:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$ apply