0

我正在尝试使用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 并做一些事情。

4

2 回答 2

0

您可以在 JADE 中的脚本标签中使用未转义字符串插值。

只需使用!{}标签。

var array = new Array(!{newArray})

应该可以正常工作

于 2016-01-12T10:42:44.027 回答
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(/&quot;/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转换为数组。

于 2016-01-12T10:01:12.810 回答