handlebars.js - not - Los manillares no generan variables booleanas cuando son falsas
handlebars partials (4)
Me sorprendió esto y terminé escribiendo un simple ayudante para ello:
Handlebars.registerHelper( ''toString'', function returnToString( x ){
return ( x === void 0 ) ? ''undefined'' : x.toString();
} );
Entonces lo invocarías de la siguiente manera:
True: {{toString booleanTestTrue}}
False: {{toString booleanTestFalse}}
En la mayoría de los escenarios, podría salirse con la suya simplemente return x.toString()
. La comprobación adicional evita intentar llamar a toString
en valores no definidos.
Handlebars.js tiene un comportamiento extraño. Muestra un valor booleano con un valor de verdadero como la cadena "verdadero", pero un valor de falso como "".
var booleanTestTrue = true;
var booleanTestFalse = false;
Modelo:
True: {{booleanTestTrue}}
False: {{booleanTestFalse}}
Se rinde a:
True: true
False: (empty string)
Hay alguna manera de arreglar este problema? ¿O tengo que escribir un ayudante?
Puede usar un simple ayudante de bloque e implementar #if como lo siguiente:
{{#if isTrue}}
true
{{else}}
false
{{/if}}
Si desea imprimir una cadena, debe pasar una cadena.
false.toString();
De lo contrario, sí necesitaría un ayudante (a menos que use el #if
| #unless
helpers para generar una cadena).
En una nota al margen, si desea imprimir estos valores con fines de depuración, use {{log booleanTestFalse}}
.
Utilicé esto, similar a la respuesta de Barney, pero también es nulo.
Handlebars.registerHelper(''toString'', function (v) {
return '''' + v;
});
Entonces lo invocarías de la siguiente manera:
True: {{toString booleanTestTrue}}
False: {{toString booleanTestFalse}}
Sin embargo, si v
es un objeto con un método bastante toString
, necesita hacer más codificación.