ng-if 不更新 DOM 变量变化
ng-if not updating DOM on variable change
我正在向我的 google 地图添加 loading_gif 并使用 google.maps.event.addListener() 确定地图何时完成加载并更新变量以停止加载微调器。看起来一切都按预期工作,我看到变量得到更新,但微调器仍然显示。
我的加载微调器:
<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>
应用程序启动,加载开始,地图在后台加载,但微调器永远不会消失。在控制台中,我看到打印出所有控制台消息 - 包括指示地图已完成加载并设置 $scope.mapLoader = 1
的消息,它应该停止 DIV 并隐藏加载 gif....但是它没有
我的控制器:
.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 地图添加 loading_gif 并使用 google.maps.event.addListener() 确定地图何时完成加载并更新变量以停止加载微调器。看起来一切都按预期工作,我看到变量得到更新,但微调器仍然显示。
我的加载微调器:
<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>
应用程序启动,加载开始,地图在后台加载,但微调器永远不会消失。在控制台中,我看到打印出所有控制台消息 - 包括指示地图已完成加载并设置 $scope.mapLoader = 1
的消息,它应该停止 DIV 并隐藏加载 gif....但是它没有
我的控制器:
.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