2016-06-20 5 views
1

私はExpressJSでJADEテンプレートエンジンを使用しています。あなたは私が私のJADEの<script>ブロックをインライン化するdata.labels値を取得しようとしている見たようJADEテンプレートエンジンでの配列の解析

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

:JADEテンプレート

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

そして、私のJADEファイルに、この配列を送る

は次のようになりますファイル。しかし、出力はこのようなものです:

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

それはこのようにする必要があります

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

私はJADEファイルで直接配列を使用するために何をすべき?

+0

は何が起こる:!{} data.labels? –

+0

@JoseHermosillaRodrigoは '#{...}'と同じです。私は '無効な構文'の行にカンマを忘れてしまった。更新された質問。 – Eray

答えて

3

JSONは物事が右になります:あなたはラベルをしようとした場合

// 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

こんにちはアマダン、あなたの答えに感謝します。しかし、私はこの方法を自分のプロジェクトに適用できませんでした。はい、クライアント側(jade.min.jsファイル)で作業しています。しかし、NodeJSは 'jade.compile()'関数を認識しませんか? – Eray

+0

魔法は最初の行にあります: '!{JSON.stringify(...)}'。残りはJadeをStack Overflowでレンダリングできるようにするだけです。 – Amadan

+1

それは私の悪いです、あなたは正しいです。それは今働いています、ありがとう! – Eray