37 votes

Modèle Jade, comment passer un objet concret aux pages ?

J'ai un modèle jade pour mon projet node.js. Je voudrais envoyer un objet au modèle jade et le passer à une fonction dans la page (pour rendre quelque chose).

Je suis sûr que j'envoie les bons trucs du serveur comme ça.

res.render(__dirname + '/pages/viz.jade', {
    vizJson: newJson,
});

dans le client, je fais quelque chose comme ça :

script
    sunburst(#{vizJson})

Ainsi, à l'intérieur d'une fonction script, je veux appeler une fonction qui crée ma visualisation avec un certain json que j'ai créé du côté du serveur.

Le problème est qu'au moment du rendu, j'obtiens quelque chose comme sunburst([Object object]) . J'ai également essayé d'envoyer la version stringifiée du JSON mais quand je fais JSON.parse(#{vizJson}) il se plaint comme Unexpected token & .

Le json que j'envoie est toujours différent et présente différents niveaux de profondeur.

Quelqu'un sait-il ce qu'il faut faire ?

Gracias

77voto

Masiar Points 2623

J'espère que cela va aider quelqu'un. J'ai résolu le problème de la façon suivante :

script
    sunburst(!{JSON.stringify(vizJson)})

Remarquez le ! et le {...} enveloppant la méthode stringify.

3voto

btford Points 4373

Pour que cela fonctionne, il faut stringifier sur le serveur.

res.render(__dirname + '/pages/viz.jade', {
    vizJson: JSON.stringify(newJson),
});

Puis, comme vous l'avez mentionné, analyser le JSON sur le client.

script
    sunburst(JSON.parse(#{vizJson}))

J'espère que cela vous aidera !

2voto

Airswoop1 Points 11

Curieusement, pour moi, la solution n'impliquait pas d'appels à JSON.parse . J'ai stringifié mon objet sur le serveur et j'ai simplement utilisé la fonction !{vizJson} et j'ai récupéré mon objet côté client.

D'après la documentation, interpolation de chaîne de caractères non encodée : http://jade-lang.com/reference/interpolation/

0voto

Greg S Points 49

Du côté de JS, vous renvoyez

res.render(__dirname + '/pages/viz.jade', {
    vizJson: JSON.stringify(newJson),
});

Du côté HTML, j'ai constaté que quelque chose comme :

JSON.parse( '!{vizJson}' )

travaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X