2016-06-20 9 views
1

Ich verwende JADE Template Engine mit ExpressJS.Parsing Arrays auf JADE Template Engine

Senden Sie dieses Array JADE Vorlage

var data = { 
    "labels" : ["Label 1", "Label 2"] 
}; 
res.render('index', {data: data}); 

Und meine JADE-Datei sieht wie folgt aus:

script(type='text/javascript'). 
    var options = { 
    labels: [#{data.labels}], 
    ... 
    }; 

Wie Sie sehen Ich versuche data.labels Werte zu erhalten <script> Block meiner JADE Inline Datei. Aber Ausgabe ist wie folgt:

<script type="..."> 
var options = { 
     labels: [Label 1, Label 2], <-- invalid syntax 
     ... 
     }; 

es muss so sein:

<script type="..."> 
var options = { 
     labels: ["Label 1", "Label 2"], <-- valid syntax 
     ... 
     }; 

Was soll ich tun, Datei direkt in JADE ein Array verwenden?

+0

Was passiert, wenn Sie Etiketten versuchen: {data.labels}? –

+0

@JoseHermosillaRodrigo wie '# {...} '. BTW Ich habe ein Komma in dieser 'ungültigen Syntax'-Zeile vergessen. Aktualisierte Frage. – Eray

Antwort

3

JSON macht alles richtig:

// magic of JSON.stringify: 
 
var src = "script var labels = !{JSON.stringify(labels)}"; 
 

 
// let's try and render it: 
 
var data = { 
 
    "labels" : ["Label 1", "Label 2"] 
 
}; 
 
var fn = jade.compile(src); 
 

 
var html = fn(data); 
 

 
console.log(html); 
 
// output: <script>var labels = ["Label 1","Label 2"]</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/jade.min.js"></script>

+0

Hallo Amadan, danke für deine Antwort. Aber ich konnte diese Methode nicht auf mein Projekt anwenden. Ja, es funktioniert auf Client-Seite (mit jade.min.js Datei). Aber NodeJS wird 'jade.compile()' Funktion nicht erkennen? – Eray

+0

Die Magie ist in der ersten Zeile: '! {JSON.stringify (...)}'. Der Rest ist nur so, dass ich Jade in Stack Overflow rendern kann. – Amadan

+1

es ist mein schlechtes, du hast Recht. Es funktioniert jetzt, danke! – Eray