Es scheint ziemlich seltsam, dass ich nicht herausfinden kann, wie man das mit dem Schnurrbart macht. Wird es unterstützt?
Dies ist mein trauriger Versuch:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Dies ist offensichtlich nicht richtig, aber in der Dokumentation wird so etwas nicht erwähnt. Das Wort "sonst" wird nicht einmal erwähnt :(
Warum ist Schnurrbart so gestaltet? Wird so etwas als schlecht angesehen? Versucht es mich zu zwingen, den Standardwert im Modell selbst festzulegen? Was ist mit den Fällen, in denen das nicht möglich ist?
javascript
templates
mustache
egervari
quelle
quelle
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
ist lesbarer, viel sauberer und ist immer noch Präsentation. "Logic-less" ist eine Richtlinie, es muss keine Zwangsjacke sein.mustache
Antworten:
So geht's, wenn / else in Moustache (perfekt unterstützt):
Oder in Ihrem Fall:
Suchen Sie in den Dokumenten nach invertierten Abschnitten: https://github.com/janl/mustache.js
quelle
if (condition){ //do something}
gefolgt von aif (!condition){//do something else}
. Außerdem ist die Menge an Logik, die man in Logik ausführen kann, im Vergleich zu einer logikbasierten Sprache extrem reduziert. Existenz oder Nichtexistenz sind die einzigen Prüfungen, dh Sie können nicht prüfen, ob der Wert eines Tags gleich 5 ist, und dann in den Code dieses Tags fallen.Dies lösen Sie im "Controller", dem Punkt des logischen Templating.
Dies ist tatsächlich viel besser als das Verwalten von Bild-URLs oder anderen Medien, die sich in Ihren Vorlagen möglicherweise ändern oder nicht, aber gewöhnungsbedürftig sind. Der Punkt ist, das Tunneln von Vorlagentunneln zu verlernen. Eine Avatar-IMG-URL muss in anderen Vorlagen verwendet werden. Werden Sie diese URL in X-Vorlagen oder einem einzelnen DEFAULTS-Einstellungsobjekt beibehalten? ;)
Eine andere Möglichkeit besteht darin, Folgendes zu tun:
Und in der Vorlage:
Aber das widerspricht der ganzen Bedeutung von logischem Templating. Wenn du das willst, willst du logisches Templating und du solltest Moustache nicht verwenden, aber gib ihm selbst eine faire Chance, dieses Konzept zu lernen;)
quelle
Ihre else- Anweisung sollte folgendermaßen aussehen (beachten Sie Folgendes
^
):Im Schnurrbart wird dies als "umgekehrte Abschnitte" bezeichnet.
quelle
Sie können einen Helfer in der Ansicht definieren. Die bedingte Logik ist jedoch etwas eingeschränkt. Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ) scheint dies mit "parametrisierten" Helfern zu beheben, z.
{{isActive param}}
und in der Ansicht:
view.isActive = Funktion (Pfad: Zeichenfolge) {Rückgabepfad === this.path? "class = 'active'": ''}
quelle
Beachten Sie, dass Sie
{{.}}
das aktuelle Kontextelement rendern können.quelle