Angular $ digest()问题?

时间:2015-08-28 10:06:02

标签: javascript angularjs angular-digest

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

模板:

 <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);

如果范围变量&#34;阻止&#34>,则按间隔调用的scaleHeadar函数应该只运行if条件。是假的。这将给出&#34; ____ false&#34;的控制台日志。和另一种说法&#34;缩放&#34;。

问题是当scope.block设置为True时,scaleHeader函数仍然会通过不应发生的if条件。

当block设置为false时,我希望控制台日志为&#34; ____ true&#34;就是这样。我得到的是以下控制台日志:

_____true
_____false
scaling

不要理解&#34; ____ false&#34;日志可以出现在两者之间。也许与$ digest()有关?

道歉可能出现错误的标题或缺乏表达问题的能力!

0 个答案:

没有答案