In JavaScript:Was ist truthy oder falsy in Moustache und Lenkstangen?
falsy: false, null, undefined, 0, -0, NaN, ""
truthy: everything else, including [] and {} (empty array and empty object)
Aber in Lenkern, scheint es, wie es (von Handlebars's docs) für {{#if foo}}
ist:
falsy: false, undefined, null, "", []
truthy: everything else, including 0, -0, {}
undefined
und NaN
als Wert in einer JSON-Datei aufgeführt ist, kann nicht so Ich kann es nicht mit einem Java Moustache-Renderer testen, obwohl es, wenn ich überhaupt keine Eigenschaft definiere, wahrscheinlich nur undefined
ist und als Falsy interpretiert wird.
Das obige ist für {{#if foo}}
, und um die Dinge komplizierter zu machen, was ist nur {{#foo}}
in Lenker und in Schnurrbart? Sind die truthy und falsy Regeln genau dasselbe wie {{#if foo}}
? Wenn möglich, geben Sie bitte Hinweise zu den Dokumenten an, um Ihren Anspruch zu unterstützen. Hoffentlich folgt die Implementierung von Moustache oder Handlebars in PHP oder Java oder anderen Sprachen exakt den gleichen Regeln.
Ich fand auch, dass für Mustache, scheint es {{#foo}}
ein Abschnitt genannt wird, und seine Regel lautet:
falsy: whatever falsy in JavaScript, plus []
truthy: everything else
Aber es scheint, dass can.js Implementierung von Schnurrbart/Lenker 0
als falsy behandelt. (Siehe http://jsfiddle.net/kAt7E/45/ vs http://jsfiddle.net/kAt7E/46/ oder http://jsfiddle.net/kAt7E/47/ vs http://jsfiddle.net/kAt7E/48/). Das ist etwas störend, so viele verschiedene Regeln zu haben.
auf http://mustache.github.io/mustache.5.html es sagt auch "[Wenn der foo Schlüssel existiert und hat] einen Wert von false oder eine leere Liste, wird der HTML zwischen dem Pfund und Schrägstrich nicht angezeigt werden ", so scheint es, dass" !! val === false "oder" val "ist' [] ', dann auch false. –
Es ist nicht so, dass Moustache "[]" als falsch ansieht. Es ist eher so, dass der Abschnitt für ein leeres Array null Mal gerendert wird - genau so, wie es einmal für ein Array mit einem Element oder zehn Mal für ein Array mit zehn Elementen gerendert würde. – bobthecow
Das ist eine ziemlich gute Antwort ... OP sollte als akzeptiert markieren! –