Saltar al contenido

Handlebars.js analiza el objeto en lugar de [Object object]

Solución:

Al emitir {{user}}, Handlebars recuperará primero el user‘s .toString() valor. Para llano Objects, 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).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *