it-swarm.com.de

Jade-Vorlage, wie man konkrete Seiten an Seiten weitergibt?

Ich habe eine Jade-Vorlage für mein Projekt node.js. Ich möchte ein Objekt an die Jade-Vorlage senden und an eine Funktion innerhalb der Seite übergeben (um etwas zu rendern).

Ich bin sicher, dass ich das richtige Zeug vom Server so schicke

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

im Client mache ich so etwas:

script
    sunburst(#{vizJson})

Daher möchte ich in einer Skriptfunktion eine Funktion aufrufen, die meine Visualisierung mit einigen json erstellt, die ich auf der Serverseite erstellt habe.

Das Problem ist, dass ich beim Rendern so etwas wie sunburst([Object object]) habe. Ich habe auch versucht, die stringifizierte Version des JSON zu senden, aber wenn ich JSON.parse(#{vizJson}) mache, beschwert er sich wie Unexpected token &.

Der Json, den ich sende, ist immer anders und hat unterschiedliche Tiefen.

Weiß jemand was zu tun ist?

Vielen Dank

37
Masiar

Ich hoffe, das hilft jemandem. Ich habe es so gelöst:

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

Beachten Sie, dass ! und {...} die Stringify-Methode umschließen.

74
Masiar

Damit dies funktioniert, müssen Sie auf dem Server eine Zeichenfolge festlegen.

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

Dann parsen Sie, wie Sie erwähnt haben, die JSON auf dem Client.

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

Hoffentlich hilft das!

3
btford

Seltsamerweise beinhaltete die Lösung für mich keine Aufrufe von JSON.parse. Ich habe mein Objekt auf dem Server stringifiziert, nur die !{vizJson}-Methode verwendet und mein Objekt clientside erhalten. 

Laut den Dokumenten, keine überlappende Zeichenketteninterpolation: http://jade-lang.com/reference/interpolation/

2
Airswoop1

Auf der JS-Seite senden Sie zurück 

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

Auf der HTML-Seite habe ich Folgendes gefunden:

JSON.parse( '!{vizJson}' )

funktioniert. 

0
Greg S