Solución:
Al emitir {{user}}
, Handlebars recuperará primero el user
‘s .toString()
valor. Para llano Object
s, el resultado predeterminado de esto es el "[object Object]"
estás viendo.
Para obtener algo más útil, querrá mostrar una propiedad específica del objeto:
{{user.id}}
{{user.name}}
O puede usar / definir un ayudante para formatear el objeto de manera diferente:
Handlebars.registerHelper('json', function(context) {
return JSON.stringify(context);
});
myView = new myView({
user : {{{json user}}} // note triple brackets to disable HTML encoding
});
Puedes simple encadenar el JSON:
var user = {}
user = {'id' : 123, 'name' : 'First Name'};
// for print
user.stringify = JSON.stringify(user);
Luego, en la plantilla, imprima por:
{{{user.stringify}}};
Estoy usando plantillas del lado del servidor en node-js, pero esto también puede aplicarse al lado del cliente. Registro el ayudante json de Jonathan en node. En mi controlador, agrego contexto (como addressBook) a través de res.locals. Entonces puedo almacenar la variable de contexto del lado del cliente de la siguiente manera:
<script>
{{#if addressBook}}
console.log("addressBook:", {{{json addressBook}}});
window.addressBook = {{{json addressBook}}};
{{/if}}
</script>
Tenga en cuenta los rizos triples (como lo señaló Jim Liu).