Ähnlich wie Jims Antwort, aber unter Verwendung einer kleinen Kreativität könnten wir auch so etwas tun:
Handlebars.registerHelper( "compare", function( v1, op, v2, options ) {
var c = {
"eq": function( v1, v2 ) {
return v1 == v2;
},
"neq": function( v1, v2 ) {
return v1 != v2;
},
...
}
if( Object.prototype.hasOwnProperty.call( c, op ) ) {
return c[ op ].call( this, v1, v2 ) ? options.fn( this ) : options.inverse( this );
}
return options.inverse( this );
} );
Dann verwenden wir es ungefähr so:
{{#compare numberone "eq" numbertwo}}
etwas tun
{{else}}
etwas anderes tun
{{/compare}}
Ich würde vorschlagen, das Objekt aus der Funktion herauszunehmen, um die Leistung zu verbessern, aber ansonsten können Sie jede Vergleichsfunktion hinzufügen, die Sie möchten, einschließlich "und" und "oder".
1 Stimmen
Für die "und" Logik können Sie verschachtelte if-Bedingungen verwenden, aber es ist umständlich und hilft Ihnen nicht beim "sonst", oder bei einer "oder" Logik wie in Ihrer obigen Frage.