首先,我将 infoWindow 的 bool 值设置为 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 中的更改使用react。我确定它也在发生变化,因为我使用 console.log() 记录了它在点击时的值,它确实从“false”变为“true”等。
那么这里发生了什么?
最佳答案
只要你在 Angular 之外做一些事情,你就需要使用 $scope.$apply() 。正如您提到的,您正在使用谷歌地图,因此需要在此处添加该行。
google.maps.event.addListener(circle, 'click', function(event) {
$scope.toggleInfoWindow();
$scope.$apply();
});
这是它的文档:https://docs.angularjs.org/api/ng/type/ $rootScope.Scope#$apply
关于javascript - Ng-show 对范围变量变化没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23931799/