Ng-show没有对范围变量做出反应

时间:2014-05-29 11:01:12

标签: javascript angularjs

首先,我将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”等。

那么这里发生了什么?

1 个答案:

答案 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