Javascript 为什么当ng show没有';T
我有一个元素(侧边栏),我只想在用户通过身份验证时显示它。这个侧边栏有一些javascript操作,比如扩展/收缩切换器。当我使用ng show时,它工作正常,但当我使用ng时,它就停止工作了。有人知道为什么会这样吗渲染它没有问题。问题是一些jquery脚本在使用ng if时不起作用。我知道ng if和ng show之间的区别,其中ng if创建了一个新的DOM、范围和全部,而ng show只是用CSS隐藏元素。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
<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 falseNg if
有自己的作用域并删除dom(以及作用域观察者),虽然ng show
只是一些CSS魔术,只隐藏您的内容,但您可以尝试使用ng if=“$parent.some_variable”
语法到达控制器的作用域。另外,你也知道,这不是消化周期的一部分。如果你对引导功能有问题,试试angularjs版本-@AlekseySolovey我会试试的!不知道jQuery和AngularJS之间的“不兼容”。非常感谢@简而言之,MatheusMedeiros:jQuery操作DOM,而AngularJS渲染DOM。您不能操作尚未呈现的内容,这在任何观察者更改后的摘要周期中发生(双向数据绑定,如ng model
或{}
)。如果您想操作DOM,请使用AngularJS指令,它们有jQLite