我有一个角度控制器和一个超时,调用一个函数来设置ng-show依赖的变量。似乎变量已成功更改,但是html元素仍在显示。
我的控制器中的JS是:
setTimeout(function () {
console.log('showAlert is - ' + $scope.showAlert);
$scope.showAlert = false;
console.log('showAlert now is - ' + $scope.showAlert);
$scope.message = '';
}, 3000);
这在$ http.post调用的成功函数中发生(如果很重要的话)。
HTML是:
<h3 ng-show="showAlert">{[{message}]}</h3>
控制台中显示的是:
showAlert是-true
showAlert现在是-错误
因此,它已成功更改,只是看起来模板没有效仿。加载页面时,它已正确隐藏,并且$ scope.showAlert最初设置为false。
这似乎是一个非常简单的示例,我不知道为什么这不起作用。如果将标签也放入容器,其作用相同。
谢谢!
最佳答案
当您通过调用settimeout函数在3秒钟后对范围进行更改时,DOM可能已经加载并使用$ scope.showalert的初始值,如果稍后更改了该值,为了应用该新更改,您可以尝试将$ scope。$ apply()放在函数的末尾。