gpt4 book ai didi

javascript - ng-if 在变量更改时不更新 DOM

转载 作者:行者123 更新时间:2023-12-03 00:18:50 29 4
gpt4 key购买 nike

我正在向我的谷歌地图添加loading_gif,并使用google.maps.event.addListener()来确定 map 何时完成加载并更新变量以停止加载微调器。看起来一切都按预期工作,我看到变量已更新,但微调器仍然显示。

我的加载微调器:

<div style="position:absolute;z-index:99;top:85px;left:38%;" ng-if="mapLoader==0">
<p style="text-align:center;">
LOADING MAP...
<br><img style="height:100px;" ng-src="img/ajax_loading.gif">
</p>
</div>

应用程序启动,加载开始, map 在后台加载,但旋转器永远不会消失。在控制台中,我看到所有控制台消息都打印出来 - 包括指示 map 已完成加载并设置 $scope.mapLoader = 1 的消息,这应该停止 DIV 并隐藏加载 gif。 ...但事实并非如此

我的 Controller :

.controller('MapCtrl', function($scope,$ionicModal,$ionicPopover,$ionicSlideBoxDelegate,$rootScope,$state,constants,apiService) {

$scope.mapLoader = 0 ;
$scope.mapTrigger = 0 ;

// recursive function to test for maps finished loading
//setMap is a global variable set elsewhere.
function checkLoader() {
console.log("CHECKING LOADER") ;
if ($scope.mapLoader == 0) {
if (setMap && $scope.mapTrigger == 0) {
$scope.mapTrigger = 1 ;
google.maps.event.addListenerOnce(setMap,'tilesloaded', (function() {
console.log("\tMAP LOADED") ; // These two successfully print out
$scope.mapLoader = 1 ; // this should stop the DIV from displaying.
console.log($scope.mapLoader) ; // These two successfully print out
})) ;
}
setTimeout(function() {
console.log("\tChecking Map") ;
checkLoader() ; // repeat function again
},500) ; // 1/2 second intervals
}
}

if ($scope.mapLoader == 0) {
checkLoader() ;
} else {
$scope.mapLoader = 1 ;
}
})

打印到控制台:

CHECKING LOADER
Checking Map
CHECKING LOADER
Checking Map
CHECKING LOADER
Checking Map
CHECKING LOADER
MAP LOADED
1
Checking Map
CHECKING LOADER

最佳答案

照这样做

   google.maps.event.addListenerOnce(setMap,'tilesloaded', (function() {
$scope.$apply(function() {
$scope.mapLoader = 1;
});
})) ;

您必须告诉 AngularJS 您有一些 Angular 未跟踪的事件,并且您需要应用立即完成的更改。

了解 $apply 的更多信息 herehere .

关于javascript - ng-if 在变量更改时不更新 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54410232/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com