Ich verwende Handlebars.js für das Rendern von clientseitigen Ansichten. Wenn Else großartig funktioniert, ich aber auf eine 3-Wege-Bedingung gestoßen bin, die ELSE IF erfordert:
Das funktioniert nicht:
{{#if FriendStatus.IsFriend }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div>
{{else if FriendStatus.FriendRequested}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div>
{{else}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div>
{{/if}}
Wie mache ich ELSE IF mit Lenker?
handlebars.js
Reach4thelasers
quelle
quelle
Antworten:
Der Lenker unterstützt
{{else if}}
Blöcke ab 3.0.0.Lenker v3.0.0 oder höher:
Vor Handlebars v3.0.0 müssen Sie jedoch entweder einen Helfer definieren, der die Verzweigungslogik verarbeitet, oder
if
Anweisungen manuell verschachteln :quelle
else if
Ich benutze normalerweise dieses Formular:
quelle
{{/if}}{{/if}}{{/if}}{{/if}}{{/if}}
Lenker unterstützt jetzt
{{else if}}
ab 3.0.0. Daher sollte Ihr Code jetzt funktionieren.Sie können ein Beispiel unter "Bedingungen" sehen (hier leicht überarbeitet mit einem Zusatz
{{else}}
:http://handlebarsjs.com/block_helpers.html
quelle
{{else if}}
Syntax unterstützt .Der Geist des Lenkers ist, dass er "logisch" ist. Manchmal haben wir das Gefühl, damit zu kämpfen, und manchmal haben wir eine hässlich verschachtelte if / else-Logik. Sie könnten einen Helfer schreiben; Viele Leute erweitern den Lenker mit einem "besseren" bedingten Bediener oder glauben, dass er Teil des Kerns sein sollte . Ich denke jedoch, dass stattdessen
Vielleicht möchten Sie die Dinge in Ihrem Modell so anordnen, dass Sie dies haben können.
Stellen Sie einfach sicher, dass nur eines dieser Flags jemals wahr ist. Wenn Sie dies
if/elsif/else
in Ihrer Ansicht verwenden, verwenden Sie es wahrscheinlich auch woanders, sodass diese Variablen möglicherweise nicht überflüssig werden.Halte es schlank.
quelle
Ich habe diesen einfachen Helfer geschrieben:
Es ist so etwas wie ein Verantwortungskettenmuster im Lenker
Beispiel:
Es ist kein anderes wenn, aber in einigen Fällen kann es Ihnen helfen)
quelle
Eingebaute Helfer
Mit dem if-Helfer können Sie einen Block bedingt rendern. Wenn das Argument false, undefined, null, "", 0 oder [] zurückgibt, wird der Block von Handlebars nicht gerendert.
Vorlage
Wenn Sie die folgende Eingabe an die obige Vorlage übergeben
quelle
Hallo, ich habe nur einen MINOR-Klassennamen bearbeitet, und bis jetzt habe ich ihn so weitergegeben. Ich denke, ich muss mehrstufige Parameter an den Helfer übergeben.
server.js
header.handlebars
quelle