我有一个按钮可以在真假之间切换范围变量:
模板:
<button ng-click="blockToggle();">Toggle</button>
控制器:
$scope.block=false;
$scope.blockToggle = function(){
//console.log('block toggle is being triggered');
if ($scope.block == false){
$scope.block = true;
} else{
$scope.block = false;
}
}
在控制器中,我还有一个以 200ms 的间隔调用的函数:
$scope.scaleHeader = function(){
console.log('_________'+$scope.block);
if($scope.block == false){
console.log('scaling');
var colNumber = document.getElementsByClassName('fixedHeader')[0].getElementsByTagName('TR')[0].getElementsByTagName('TH');
for (i = 0; i < colNumber.length; i++) {
var newColSize = document.getElementById(i).getBoundingClientRect().width;
document.getElementsByClassName('fixedHeader')[0].getElementsByTagName('TR')[0].getElementsByTagName('TH')[i].style.minWidth = newColSize +"px";
document.getElementsByClassName('fixedHeader')[0].getElementsByTagName('TR')[1].getElementsByTagName('TD')[i].style.minWidth = newColSize +"px";
}
}
}
$interval( function(){ $scope.scaleHeader(); }, 200);
如果范围变量“block”为假,则间隔调用的 scaleHeadar 函数应仅通过 if 条件运行。这将给出“____false”的控制台日志和另一个说法“缩放”。
问题在于,当 scope.block 设置为 True 时,scaleHeader 函数仍会经历不应发生的 if 条件。
当块设置为假时,我希望控制台日志为“____true”,就是这样。我得到的是以下控制台日志:
_____true
_____false
scaling
不明白“____false”日志如何出现在两者之间。也许与 $digest() 有关?
对于可能不正确的标题或缺乏表达问题的能力,我们深表歉意!