Korrekte Lösung für UND/ODER
Handlebars.registerHelper('and', function () {
// Funktionargumente abrufen und den letzten (Funktionsnamen) entfernen
return Array.prototype.slice.call(arguments, 0, arguments.length - 1).every(Boolean);
});
Handlebars.registerHelper('or', function () {
// Funktionargumente abrufen und den letzten (Funktionsnamen) entfernen
return Array.prototype.slice.call(arguments, 0, arguments.length - 1).some(Boolean);
});
Dann wie folgt aufrufen
{{#if (or (eq questionType 'STARTTIME') (eq questionType 'ENDTIME') (..) ) }}
Übrigens: Beachten Sie, dass die hier gegebene Lösung inkorrekt ist, da der letzte Argument, welcher der Funktionsname ist, nicht abgezogen wird. https://stackoverflow.com/a/31632215/1005607
Sein originaler UND/ODER basierte auf der vollständigen Liste der Argumente
and: function () {
return Array.prototype.slice.call(arguments).every(Boolean);
},
or: function () {
return Array.prototype.slice.call(arguments).some(Boolean);
}
Kann jemand diese Antwort ändern? Ich habe gerade eine Stunde damit verbracht, etwas in einer von 86 Personen empfohlenen Antwort zu beheben. Die Korrektur besteht darin, den letzten Argument, welcher der Funktionsname ist, auszufiltern. Array.prototype.slice.call(arguments, 0, arguments.length - 1)
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.