AngularJS:为什么ng-show不能用于IE11?

时间:2016-04-12 19:09:46

标签: javascript angularjs html5 css3 angularjs-directive

在我的代码中,ng-show在firefox上运行正常,而不是在IE 11上运行。

<div ng-show="isExist" class="panel panel-default">

并在控制器中

$scope.isExist = false;

if(user.name)
{
   $scope.isExist = true;

}

我将$ scope.isExist视为false并且Div获取隐藏在ff / chrome上,但不会隐藏在ie11上。

3 个答案:

答案 0 :(得分:0)

这真是一个CSS问题。 ng-show会将.ng-hide类添加到元素中。仔细检查面板和面板默认类,确保没有任何内容覆盖样式。

或者删除面板和面板默认类,它将起作用。

答案 1 :(得分:0)

对不起伙计们。它表现得很好。现在它开始正常工作了。我很确定它不是缓存问题,因为我已经清除了很多次。不知道出了什么问题。它现在工作正常。谢谢你的帮助。

答案 2 :(得分:0)

我遇到了 ng-show 无法在 Internet Explorer 中工作的同样问题。

official ngShow AngularJS documentation 提到了这一点,并为此提供了一些解决方法。

(我将复制粘贴该链接中提到的文本,以防该链接已过期或由于某种原因无法使用)

<块引用>

当使用 ngShow 和/或 ngHide 在元素之间切换时,它 可能发生的情况是要显示的元素和要隐藏的元素都是 在很短的时间内可见。

这通常在包含 ngAnimate 模块时发生,但没有 实际动画是为 ngShow / ngHide 定义的。互联网 Explorer 比其他浏览器更容易受到影响。

有几种方法可以缓解这个问题:

  • 在受影响的元素上禁用动画。
  • 使用 ngIfngSwitch 代替 ngShow / ngHide
  • 使用特殊的 CSS 选择器 ng-hide.ng-hide-animate 在受影响的元素上设置 {display: none} 或类似选项。
  • 使用 ng-class="{'ng-hide': expression} 代替 ngShow / ngHide
  • 在受影响的元素上定义动画。

第二个建议(用 ng-show 替换 ng-if)对我有用。所以在你的情况下,你可以考虑使用这个 -

<div ng-if="isExist" class="panel panel-default">
相关问题