我有一个角度控制器和一个超时,调用一个函数来设置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()放在函数的末尾。

08-19 19:18