0

我有一个按钮可以在真假之间切换范围变量:

模板:

 <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() 有关?

对于可能不正确的标题或缺乏表达问题的能力,我们深表歉意!

4

0 回答 0