Почему ng-if портится с моим javascript, а ng-show нет?
У меня есть элемент (боковая панель), где я хочу показать его только при аутентификации пользователя. Эта боковая панель имеет некоторые действия javascript, такие как расширение / сжатие переключателя. Когда я использую ng-show, он работает нормально, но когда я использую ng-if, он просто перестает работать. Кто-нибудь знает, почему это происходит? У меня нет проблем с рендерингом. Проблема в том, что некоторые скрипты jquery не работают при использовании ng-if. Я знаю разницу между ng-if и ng-show, где ng-if создает новый DOM, scope и все, в то время как 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>
1 ответ
Как другие заявили в комментарии выше,
ng-if
удалит элементы из DOM, что означает, что все ваши обработчики или что-либо еще, прикрепленное к этим элементам, будут потеряны.
ng-show/ng-hide
не удаляет элементы из DOM. Он внутренне использует стили, чтобы скрыть / показать элементы