Mam powiązanie szablonu, które wyświetla atrybut modelu o nazwie „data”, który jest datą, używając filtru daty Angulara.
<span class="gallery-date">{{gallery.date | date:'mediumDate'}}</span>
Na razie w porządku. Jednak w tej chwili, jeśli w polu daty nie ma wartości, powiązanie nic nie wyświetla. Chciałbym jednak, aby wyświetlał ciąg „Różne”, jeśli nie ma daty.
Mogę uzyskać podstawową logikę za pomocą operatora binarnego:
<span class="gallery-date">{{gallery.date || 'Various'}}</span>
Jednak nie mogę zmusić go do pracy z filtrem daty:
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Various"}}</span>
Jak mogę używać operatora binarnego obok filtra daty?
{{(gallery.date | date:'mediumDate') || "0"}}
Zrobiłem następujący filtr:
Do użycia w ten sposób:
źródło
if (angular.isUndefined(defaultValue) || ... )
instrukcję wewnątrz istniejącej, za pomocą którejdefString
filtr zwraca ciąg znaków "default
" (inne prawdopodobnie przyjdą później). To pozwala mi używać go jak<span>{{expected.string | defString}}</span>
i dostaćdefault
jako ostateczny poziom awaryjnej.Na wypadek gdybyś chciał spróbować czegoś innego. Oto, co zadziałało dla mnie:
Oparty na operatorze trójargumentowym, który ma następującą strukturę:
W wyniku:
źródło
Jak mogę używać operatora binarnego obok filtra daty?
spróbuj też:
źródło
Naprawdę podobała mi się ta odpowiedź, z ngBind, twój domyślny tekst może po prostu żyć w treści elementu, a następnie, jeśli ngBind oceni jako coś innego niż null / undefined, twoja zawartość zostanie automatycznie zastąpiona i wszystko będzie szczęśliwe
angularjs ustawia wartości domyślne do wyświetlenia przed oceną
źródło
W twoim cshtml,
W Twoim pliku JS, może app.js,
Poza app.controller dodaj poniższy filtr.
Tutaj „moja data” to funkcja, którą wywołujesz w celu przeanalizowania daty. Tutaj „aplikacja” jest zmienną, która zawiera moduł angular.module
źródło