node.js - programacion - Plantilla de Jade, ¿cómo pasar un objeto concreto a las páginas?
pug preprocesador html (4)
Del lado de JS, enviaste de vuelta
res.render(__dirname + ''/pages/viz.jade'', {
vizJson: JSON.stringify(newJson),
});
En el lado de HTML, he encontrado algo así como:
JSON.parse( ''!{vizJson}'' )
trabajos.
Tengo una plantilla de jade para mi proyecto node.js. Me gustaría enviar un objeto a la plantilla de jade y pasarlo a una función dentro de la página (para representar algo).
Estoy seguro de que envío las cosas correctas desde el servidor de esta manera
res.render(__dirname + ''/pages/viz.jade'', {
vizJson: newJson,
});
en el cliente, hago algo como esto:
script
sunburst(#{vizJson})
Por lo tanto, dentro de una función de script, quiero llamar a una función que crea mi visualización con un json creado en el lado del servidor.
El problema es que cuando se procesa tengo algo como sunburst([Object object])
. También traté de enviar la versión en cadena del JSON pero cuando lo hago JSON.parse(#{vizJson})
se queja como Unexpected token &
.
El json que envío siempre es diferente y tiene diferentes niveles de profundidad.
¿Alguien sabe qué hacer?
Gracias
Espero que esto ayude a alguien. Lo solucioné así:
script
sunburst(!{JSON.stringify(vizJson)})
¡Fíjate !
y el {...}
envolviendo el método de stringify.
Para que esto funcione, debe stringify en el servidor.
res.render(__dirname + ''/pages/viz.jade'', {
vizJson: JSON.stringify(newJson),
});
Luego, como mencionaste, analiza el JSON en el cliente.
script
sunburst(JSON.parse(#{vizJson}))
¡Espero que ayude!
Por extraño que parezca, para mí la solución no involucraba llamadas a JSON.parse
. Codifiqué mi objeto en el servidor y simplemente utilicé el método !{vizJson}
y obtuve mi objeto en el lado del cliente.
Según los documentos, interpolación de cadenas no guardadas: http://jade-lang.com/reference/interpolation/