Почему ng-if портится с моим javascript, а ng-show нет? - PullRequest
0 голосов
/ 01 мая 2018

У меня есть элемент (боковая панель), где я хочу показать его только при аутентификации пользователя. У этой боковой панели есть некоторые действия 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>

Expanded sidebar (using ng-if the toggler doesn't work)

Using ng-show I can contract it

1 Ответ

0 голосов
/ 01 мая 2018

Как уже говорилось в комментарии выше,

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

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

...