J'ai un modèle en jade pour mon projet node.js. Je voudrais envoyer un objet au modèle de jade et le transmettre à une fonction à l'intérieur de la page (pour rendre quelque chose).
Je suis sûr que j'envoie les bons éléments du serveur comme ceci
res.render(__dirname + '/pages/viz.jade', {
vizJson: newJson,
});
dans le client, je fais quelque chose comme ça:
script
sunburst(#{vizJson})
Ainsi, dans une fonction de script, je souhaite appeler une fonction qui crée ma visualisation avec certains JSON que j'ai créés côté serveur.
Le problème est que, une fois rendu, j'ai quelque chose comme sunburst([Object object])
. J'ai également essayé d'envoyer la version du JSON sous forme de fichier stratifié mais quand je fais JSON.parse(#{vizJson})
, il se plaint comme Unexpected token &
.
Le JSON que j’envoie est toujours différent et a différents niveaux de profondeur.
Est-ce que quelqu'un sait quoi faire?
Merci
J'espère que cela va aider quelqu'un. Je l'ai résolu comme ça:
script
sunburst(!{JSON.stringify(vizJson)})
Notez le !
et le {...}
enveloppant la méthode stringify.
Pour que cela fonctionne, vous devez stringifier sur le serveur.
res.render(__dirname + '/pages/viz.jade', {
vizJson: JSON.stringify(newJson),
});
Ensuite, comme vous l'avez mentionné, analysez le code JSON sur le client.
script
sunburst(JSON.parse(#{vizJson}))
J'espère que cela pourra aider!
Curieusement, la solution ne comportait pour moi aucun appel à JSON.parse
. J'ai stratifié mon objet sur le serveur et juste utilisé la méthode !{vizJson}
et obtenu mon objet côté clients.
Selon les documents, interpolation de chaîne sans échappement: http://jade-lang.com/reference/interpolation/
Du côté JS, vous renvoyez
res.render(__dirname + '/pages/viz.jade', {
vizJson: JSON.stringify(newJson),
});
Du côté HTML, j'ai trouvé que quelque chose comme:
JSON.parse( '!{vizJson}' )
travaux.