我有一个角度控制器和一个超时调用函数,该函数设置一个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。
这似乎是一个非常简单的例子,我不知道为什么这不起作用。如果我将标签放入包含中,它的行为也是一样的。
谢谢!
答案 0 :(得分:1)
当您通过调用settimeout函数在3秒后更改范围时,DOM可能已经加载并使用$ scope.showalert的初始值,如果稍后更改了值,则为了应用该新更改,你可以尝试在我们的函数末尾放置$ scope。$ apply()。