2014-05-25 11 views
5

ngIf warunkowo dodaje/usuwa znacznik do DOM.Szablony Angularjs: jak warunkowo zawijać znacznik w innym tagu

Ale jeśli chcę warunkowo zawijać jeden znacznik (np. Zawartość) w innym (np. Układzie), jaki jest w tym celu najbardziej kątowy sposób, aby uzyskać ?

Poniżej jest jak zrobiłbym to w kierownicy

{{#if layout}} <div class="layout"> {{/if}} 
    Content is always here, it is wrapped only if layout is specified 
{{#if layout}} </div> {{/if}} 
+1

Myślę, że cały scenariusz wykracza poza kątowy sposób robienia rzeczy. Jestem pewien, że możesz osiągnąć ten sam rezultat przy użyciu stałej struktury DOM. – Hans

+0

Tak wymyśliłem, dzięki –

Odpowiedz

2

Mogę nie do końca zrozumieć twój cel końcowy tutaj, ale wygląda na to, że byłby to nieprawidłowy html.

Bez względu na wszystko, najlepszym wyjściem byłoby napisanie dyrektywy, która zbuduje dla ciebie twój html.

Jeśli nie czujesz się dobrze z dyrektywami niestandardowymi, łatwiejszym narzędziem będzie ngSwitch. Umożliwiłoby to ustawienie w jedną stronę jako domyślną, a następnie przejście do drugiej na podstawie wyrażenia określającego, czy układ ma być zawijany, czy nie.

Jedyne, czego nie lubię w używaniu ngSwitch w tego typu przypadkach, wymaga powielenia fragmentu kodu. W tym przypadku jest to bardzo minimalne.

Jeśli musisz to zrobić w swoim zgłoszeniu kilka razy, warto napisać własną dyrektywę, aby zrobić to w mojej opinii.

2

Pierwszą rzeczą, która przychodzi na myśl w tym scenariuszu wykorzystuje ng-class na metce owijania. Nie robi dokładnie tego, co chciałeś, ponieważ tag zawijania zawsze będzie obecny w DOM, ale możesz modyfikować jego zachowanie w CSS zgodnie z twoimi warunkami.

Powiązane problemy