我试图使用JSCharts
。
block content
| <div id="chartcontainer">This is just a replacement in case Javascript is not available or used for SEO purposes</div>
script.
var myData=new Array()
var myData = new Array([10, 20], [15, 10], [20, 30], [25, 10], [30, 5]);
var myChart = new JSChart('chartcontainer', 'line');
myChart.setDataArray(myData);
myChart.draw();
我在nodejs中动态创建了一个数组
[ [10, 20], [15, 10], [20, 30], [25, 10], [30, 5] ]
然后将它传递给玉。
res.render('chart',{newArray:array});
但是,我无法在上面提到的内联函数中使用它。
我尝试使用var myData="#{newArray}"
,但它只提供了一个像10,20,15,10,20,30...
这样的字符串无法使用。
我也试过发送Json对象。但在"#{myJson}"
和/或stringify
我该怎么办?另外,有什么办法可以在script.
块之外使用这个脚本吗?因为即使我已将文件包含在JSChart()
中,但在我尝试时也无法找到head
。如果可以,那么我可以迭代json并做一些事情。
答案 0 :(得分:0)
现在我正在使用这个解决方案:
block content
| <div id="chartcontainer">This is just a replacement in case Javascript is not available or used for SEO purposes</div>
-var myJson=JSON.stringify(json);
script.
var array = new Array();
var myData=JSON.parse(("#{myJson}").replace(/"/g,'"'));
myData.forEach(function(data)
{
array.push([data.x,data.y]);
})
var myChart = new JSChart('chartcontainer', 'line');
myChart.setDataArray(array);
myChart.draw();
但这似乎是非常愚蠢和不必要的处理;在节点中创建json,然后将其发送到jade,将json转换为字符串,再将json转换为数组。
答案 1 :(得分:0)
您可以在脚本代码中的JADE中使用Unescaped String Interpolation。
只需使用!{}
代码。
var array = new Array(!{newArray})
应该可以正常工作