Подтвердить что ты не робот

NgIf и ngSwitch AngularJS

Какая практическая разница между ngIf и ngSwitch? Обе директивы управляют DOM, но ngSwitch является более подробным. Является ли типичный случай просто использовать ngIf, если вам не нужен что-то действительно большое, в этом случае используйте ngSwitch?

Есть ли ситуация, когда ngSwitch и ngIf не являются прямыми заменами? Или их единственное практическое отличие от синтаксиса?

4b9b3361

Ответ 1

Брэндон Тилли, по-моему, понял это точно, в частности, указав контраст с ngShow/ngHide. Там есть еще одна разница: ng-If будет отсоединять и снова прикреплять элемент на месте. Но ng-Switch имеет внешний содержащий элемент, на котором вы объявляете главную директиву и ее условие: ng-switch="expression" . Условное содержимое внутри этого внешнего элемента будет append() -ed как последний дочерний элемент внешнего элемента, тем самым изменяя его положение относительно любого некондиционного содержимого внутри внешнего элемента.

И, см. этот CodePen для интерактивной демонстрации всех трех, показывая различия в исполнении.


EDIT: это поведение изменилось в Angular 1.2. Элементы теперь оставлены на месте. Codepen выше упоминает и демонстрирует это, обеспечивая связь с 1.08 Plunk, который, к сожалению, был уничтожен...

Ответ 2

ngIf - это в основном версия ngSwitch с одним условием. Он отличается от ngShow тем, что он удаляет фактический элемент DOM, а не просто скрывает его. Если вы используете ngSwitch только с одной проверкой состояния, то я верю, что ngIf сделает то же самое.

Ответ 3

Еще одно отличие заключается в том, что ngIf и ngSwitch создают новые области действия, в то время как ngShow/ngHide не делают.

Ответ 4

Вы можете думать в ngIf/ngSwitch так же, как с if/switch при кодировании. Очевидно, что они делают почти то же самое, но есть случаи, когда ngIf лучше, и есть случаи, когда nfSwitch лучше.