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