AngularJS:为什么ng show没有在IE11上运行

AngularJS : Why ng-show is not working on IE11?

本文关键字:IE11 运行 为什么 ng show AngularJS      更新时间:2024-06-10

在我的代码中,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上没有。

这实际上是一个CSS问题。ng show将向元素中添加.ng隐藏类。仔细检查面板和面板默认类,以确保没有任何内容覆盖样式。

或者删除你的面板和面板默认类,它就会起作用。

抱歉各位。它的行为很恶劣。现在它开始运行良好。我很确定这不是缓存问题,因为我已经清除了很多次。不确定出了什么问题。它现在运行良好。谢谢你的帮助。

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

ngShowAngularJS官方文档提到了这一点,并提供了一些解决方法。

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

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

这种情况通常发生在包含ngAnimate模块,但没有为CCD_ 5/CCD_。互联网浏览器比其他浏览器更容易受到影响。

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

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

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

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