Zastanawiałem się, czy istnieje kątowy sposób warunkowego wyświetlania treści inny niż użycie ng-show itp. Na przykład w backbone.js mógłbym zrobić coś z zawartością wbudowaną w szablonie, takim jak:
<% if (myVar === "two") { %> show this<% } %>
ale pod kątem wydaje się, że ograniczam się do pokazywania i ukrywania rzeczy owiniętych w tagi HTML
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
Jaki jest zalecany sposób wyświetlania kątowego warunkowego wyświetlania i ukrywania treści wbudowanych w angularu za pomocą {{}} zamiast zawijania zawartości w tagach HTML?
angularjs
if-statement
ternary-operator
użytkownik1469779
źródło
źródło
Odpowiedzi:
EDYCJA: Odpowiedź 2Toad poniżej jest tym, czego szukasz! Głosuj za tym
Jeśli używasz Angulara <= 1.1.4, ta odpowiedź zrobi:
Jeszcze jedna odpowiedź na to. Podaję osobną odpowiedź, ponieważ jest to bardziej „dokładna” próba rozwiązania niż lista możliwych rozwiązań:
Oto filtr, który wykona „natychmiastowe, jeśli” (alias iif):
i mogą być używane w następujący sposób:
źródło
Dodano obsługę Angular 1.1.5 dla operatorów trójskładnikowych:
źródło
myVar
tylko wtedy, gdy jest fałszywa? (tzn. jak zagnieżdżać zmienne w wyrażeniu?) Próbowałem z,{{myVar === "two" ? "it's true" : {{myVar}}}}
ale to nie działa.myVar
właściwość nie musi być zawijana w dodatkowe nawiasy klamrowe, jest już w wyrażeniu. Spróbuj{{myVar === "two" ? "it's true" : myVar}}
Tysiące sposobów na skórowanie tego kota. Zdaję sobie sprawę, że pytasz konkretnie o {{}}, ale dla innych, którzy tu przychodzą, myślę, że warto pokazać inne opcje.
funkcja na $ zakres (IMO, to jest twój najlepszy zakład w większości scenariuszy):
ng-show i ng-hide oczywiście:
ngSwitch
Filtr niestandardowy, jak sugerował Bertrand. (jest to najlepszy wybór, jeśli musisz robić to samo w kółko)
Lub niestandardowa dyrektywa:
Osobiście w większości przypadków korzystałbym z funkcji w moim zasięgu, która utrzymuje znaczniki w czystości, a jego wdrożenie jest szybkie i łatwe. Chyba że, to znaczy, będziesz robić to samo od nowa w kółko, w takim przypadku skorzystałbym z sugestii Bertranda i stworzyłbym filtr lub ewentualnie dyrektywę, w zależności od okoliczności.
Jak zawsze najważniejsze jest to, że Twoje rozwiązanie jest łatwe w utrzymaniu i, mam nadzieję, że można je przetestować. A to całkowicie zależy od konkretnej sytuacji.
źródło
Korzystam z następujących opcji, aby warunkowo ustawić klasę attr, gdy nie można użyć klasy ng (na przykład podczas stylowania SVG):
To samo podejście powinno działać w przypadku innych typów atrybutów.
(Myślę, że musisz używać najnowszego niestabilnego Angulara, aby używać ng-attr-, aktualnie jestem na wersji 1.1.4)
Opublikowałem artykuł o pracy z AngularJS + SVG, który mówi o tym i powiązanych zagadnieniach. http://www.codeproject.com/Articles/709340/Implementing-a-Flowchart-with-SVG-and-AngularJS
źródło
Aby sprawdzić zmienną zawartość i mieć domyślny tekst, możesz użyć:
źródło
Jeśli dobrze cię zrozumiałem, myślę, że masz na to dwa sposoby.
Najpierw możesz wypróbować ngSwitch, a drugim możliwym sposobem byłoby stworzenie własnego filtra . Prawdopodobnie ngSwitch jest właściwym podejściem, ale jeśli chcesz ukryć lub pokazać zawartość wbudowaną tylko za pomocą filtra {{}}, możesz to zrobić.
Oto skrzypce z prostym filtrem jako przykładem.
źródło
Biblioteka Angular UI ma wbudowaną dyrektywę ui-if dla warunku w szablonie / Widoki do angular ui 1.1.4
Przykład: Wsparcie w Angular UI upto ui 1.1.4
ng-jeśli jest dostępny we wszystkich wersjach kątowych po 1.1.4
jeśli masz jakieś dane w zmiennej tablicowej, pojawi się tylko div
źródło
ui-if
został usunięty przynajmniej z najnowszej wersji angular-ui, ale od wersji kątowej 1.1.5 maszng-if
(z tego komentarza )Tak więc w Angular 1.5.1 (istniała zależność aplikacji od niektórych innych zależności stosu MEAN, dlatego obecnie nie używam 1.6.4)
Działa to dla mnie, jak mówi OP
{{myVar === "two" ? "it's true" : "it's false"}}
źródło
jeśli chcesz wyświetlić „Brak”, gdy wartość wynosi „0”, możesz użyć jako:
lub true false w kątowym js
źródło
Działa nawet w egzotycznych sytuacjach:
źródło
Wrzucę moje do miksu:
https://gist.github.com/btm1/6802312
ocenia to raz instrukcję if i nie dodaje nasłuchiwania, ALE można dodać dodatkowy atrybut do elementu, który ma zestaw-if o nazwie wait-for = "somedata.prop" i będzie czekał na ustawienie tych danych lub właściwości przed jednorazowa ocena instrukcji if. ten dodatkowy atrybut może być bardzo przydatny, jeśli czekasz na dane z żądania XHR.
źródło