将Jade模板变量填充到内联函数中

Padding Jade template variable to inline function

本文关键字:函数 填充 Jade 变量      更新时间:2023-09-26

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

现在我正在使用这个解决方案:

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();

但这似乎真的很愚蠢和不必要的处理;在node中创建json,然后将其发送到jade,将json转换为字符串,然后再转换为json,再转换为数组。

您可以在脚本标记中的JADE中使用Unescaped String Interpolation。

只需使用!{}标签。

var array = new Array(!{newArray})

应该工作良好