Почему 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>

Расширенная боковая панель (с помощью ng-if, если переключатель не работает

С помощью ng-show я могу заключить контракт

1 ответ

Как другие заявили в комментарии выше,

ng-if удалит элементы из DOM, что означает, что все ваши обработчики или что-либо еще, прикрепленное к этим элементам, будут потеряны.

ng-show/ng-hide не удаляет элементы из DOM. Он внутренне использует стили, чтобы скрыть / показать элементы

Другие вопросы по тегам