Angular ng-show未反映变量

时间:2017-04-10 03:41:13

标签: javascript angularjs

我有一个角度控制器和一个超时调用函数,该函数设置一个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。

这似乎是一个非常简单的例子,我不知道为什么这不起作用。如果我将标签放入包含中,它的行为也是一样的。

谢谢!

1 个答案:

答案 0 :(得分:1)

当您通过调用settimeout函数在3秒后更改范围时,DOM可能已经加载并使用$ scope.showalert的初始值,如果稍后更改了值,则为了应用该新更改,你可以尝试在我们的函数末尾放置$ scope。$ apply()。