javascript - Ng-show 对范围变量变化没有反应

标签 javascript angularjs

首先,我将 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/

相关文章:

javascript - Weather App React 只需点击三下即可更新状态并传递 Prop

javascript - 如何从 Node.js 中的 $http 请求返回 ArrayBuffer?

angularjs - ngResource 中的虚拟属性

javascript - AngularJS - 通过ajax提交带有复选框的表单

javascript - 如何将数组 $scope 转换为 json 对象?

javascript - .hide() div 当计时器达到 0 时

Javascript 动态插入插件和代码

javascript - 如何以编程方式打开 d3 元素的 ngbootstrap 弹出窗口?

javascript - 鼠标离开时保持子菜单打开

javascript - 以 Angular 登录后将数据发送到不同的 Controller