Javascript 为什么当ng show没有';T

Javascript 为什么当ng show没有';T,javascript,angularjs,ng-show,Javascript,Angularjs,Ng Show,我有一个元素(侧边栏),我只想在用户通过身份验证时显示它。这个侧边栏有一些javascript操作,比如扩展/收缩切换器。当我使用ng show时,它工作正常,但当我使用ng时,它就停止工作了。有人知道为什么会这样吗渲染它没有问题。问题是一些jquery脚本在使用ng if时不起作用。我知道ng if和ng show之间的区别,其中ng if创建了一个新的DOM、范围和全部,而ng show只是用CSS隐藏元素。 <div ng-if="sidebar && signedU

我有一个元素(侧边栏),我只想在用户通过身份验证时显示它。这个侧边栏有一些javascript操作,比如扩展/收缩切换器。当我使用ng show时,它工作正常,但当我使用ng时,它就停止工作了。有人知道为什么会这样吗渲染它没有问题。问题是一些jquery脚本在使用ng if时不起作用。我知道ng if和ng show之间的区别,其中ng if创建了一个新的DOM、范围和全部,而ng show只是用CSS隐藏元素。

<div ng-if="sidebar && signedUser" ng-cloak>

    (some components here...)

    <ul class="navbar-nav sidenav-toggler">
      <li class="nav-item">
        <a class="nav-link text-center" id="sidenavToggler">
          <i class="fa fa-fw fa-angle-left"></i>
        </a>
      </li>
    </ul>
</div>

(此处的一些组件…)

  • 如上述评论中所述

    ng if
    将从DOM中删除元素,这意味着所有处理程序或附加到这些元素的任何其他内容都将丢失


    ng show/ng hide
    不会从DOM中删除元素。它在内部使用样式隐藏/显示元素

    Ng show渲染dom但将其隐藏,Ng if不渲染if false
    Ng if
    有自己的作用域并删除dom(以及作用域观察者),虽然
    ng show
    只是一些CSS魔术,只隐藏您的内容,但您可以尝试使用
    ng if=“$parent.some_variable”
    语法到达控制器的作用域。另外,你也知道,这不是消化周期的一部分。如果你对引导功能有问题,试试angularjs版本-@AlekseySolovey我会试试的!不知道jQuery和AngularJS之间的“不兼容”。非常感谢@简而言之,MatheusMedeiros:jQuery操作DOM,而AngularJS渲染DOM。您不能操作尚未呈现的内容,这在任何观察者更改后的摘要周期中发生(双向数据绑定,如
    ng model
    {}
    )。如果您想操作DOM,请使用AngularJS指令,它们有jQLite