AngularJS更新DOM

AngularJS更新DOM,angularjs,Angularjs,有人能解释一下如何让DOM“刷新”AngularJS中的值吗?下面是一个我正在努力实现的例子 该按钮开始禁用,3秒钟后,我希望它被启用。我的代码确实正确地启用了变量,但是ng disabled并没有刷新。我怎样才能解决这个问题 我读过有关$apply的文章,但很多人说它很难理解,使用起来很危险。我自己不能申请工作(我不会真正理解) 欢迎你向我提出其他问题,因为我相信这个问题不是什么新问题 <button ng-disabled="!Check1 || !Check2">Disab

有人能解释一下如何让DOM“刷新”AngularJS中的值吗?下面是一个我正在努力实现的例子

该按钮开始禁用,3秒钟后,我希望它被启用。我的代码确实正确地启用了变量,但是ng disabled并没有刷新。我怎样才能解决这个问题

我读过有关$apply的文章,但很多人说它很难理解,使用起来很危险。我自己不能申请工作(我不会真正理解)

欢迎你向我提出其他问题,因为我相信这个问题不是什么新问题

  <button ng-disabled="!Check1 || !Check2">Disabled</button>
  ...
  $scope.Check1 = false;
  $scope.Check2 = true;
  setTimeout(() => {
    $scope.Check1 = true;
    alert('Check1 now true');
  }, 3000);
已禁用
...
$scope.Check1=false;
$scope.Check2=true;
设置超时(()=>{
$scope.Check1=true;
警报(“检查1现在为真”);
}, 3000);


*注意:不要让我参考$timeout。这里的超时只是延迟响应的一个例子,它可以是任何东西。

我现在看到这很容易。只需将值更改包装在
$scope.$apply
中,如下所示:

  <button ng-disabled="!Check1 || !Check2">Disabled</button>
  ...
  $scope.Check1 = false;
  $scope.Check2 = true;
  setTimeout(() => {
    $scope.$apply(function () {
      $scope.Check1 = true;
      alert('Check1 now true');
    });
  }, 3000);
已禁用
...
$scope.Check1=false;
$scope.Check2=true;
设置超时(()=>{
$scope.$apply(函数(){
$scope.Check1=true;
警报(“检查1现在为真”);
});
}, 3000);

这篇文章对解决这个问题很有帮助:

是的。不过,不需要包装,您可以在设置scope变量后调用$scope.$apply()。但您应该努力做到根本不使用范围。见controllerAs