Wydaje się dość dziwne, że nie potrafię tego zrobić w wąsach. Czy to jest obsługiwane?
To moja smutna próba:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
To oczywiście nie jest poprawne, ale dokumentacja nie wspomina czegoś takiego. Słowo „else” nie jest nawet wspomniane :(
Ponadto, dlaczego wąsy są zaprojektowane w ten sposób? Czy coś takiego uważa się za złe? Czy próbuje zmusić mnie do ustawienia wartości domyślnej w samym modelu? Co z przypadkami, w których nie jest to możliwe?
javascript
templates
mustache
egervari
źródło
źródło
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
Jest bardziej czytelna, dużo czystsza i wciąż jest prezentacją. „Bez logiki” jest wytyczną, nie musi to być kaftan bezpieczeństwa.mustache
Odpowiedzi:
Oto jak to zrobić, jeśli / else w Mustache (doskonale obsługiwany):
Lub w twoim przypadku:
Poszukaj odwróconych sekcji w dokumentacji: https://github.com/janl/mustache.js
źródło
if (condition){ //do something}
po której następujeif (!condition){//do something else}
. Ponadto ilość logiki, którą można wykonać w logice, jest znacznie zmniejszona w porównaniu do języka opartego na logice. Istnienie lub nieistnienie są jedynymi sprawdzeniami, tzn. Nie można sprawdzić, czy wartość znacznika wynosi 5, a następnie wpaść w kod tego znacznika.Jest to coś, co rozwiązujesz w „kontrolerze”, co jest celem bezlogicznego tworzenia szablonów.
Jest to o wiele DUŻO lepsze niż utrzymywanie adresu URL obrazu lub innych nośników, które mogą lub nie mogą się zmieniać w twoich szablonach, ale trzeba się przyzwyczaić. Chodzi o to, aby oduczyć się wizji tunelu szablonów, adres URL img awatara musi być używany w innych szablonach, czy zamierzasz zachować ten adres URL w szablonach X lub w pojedynczym obiekcie ustawień DOMYŚLNYCH? ;)
Inną opcją jest wykonanie następujących czynności:
I w szablonie:
Jest to jednak sprzeczne z całym sensem logicznego szablonowania. Jeśli to właśnie chcesz zrobić, potrzebujesz logicznego szablonowania i nie powinieneś używać Wąsa, ale daj sobie szansę na poznanie tej koncepcji;)
źródło
Twoje oświadczenie else powinno wyglądać tak (zwróć uwagę na
^
):W wąsach nazywa się to „sekcjami odwróconymi”.
źródło
Możesz zdefiniować pomocnika w widoku. Jednak logika warunkowa jest nieco ograniczona. Wydaje się, że Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ) rozwiązuje ten problem za pomocą „sparametryzowanych” pomocników, np .:
{{isActive param}}
i w widoku:
view.isActive = function (path: string) {return path === this.path? „class = 'active'”: ''}
źródło
Uwaga: możesz użyć
{{.}}
do renderowania bieżącego elementu kontekstu.źródło