如何使用jade和express在脚本标记中动态生成javascript
我试图为d3图形动态生成json数据。我不确定这是否是最佳策略,但我的尝试本质上是将d3代码放在脚本标记中,然后通过在express中传递的对象生成json 我遇到的问题是,我不确定如何在脚本标记中动态生成json数据。如果有更好的代码设计策略可以动态生成json对象,并将其传递给d3以使用jade/pug生成图表,请告诉我。下面的代码不起作用 代码如下: 玉码如何使用jade和express在脚本标记中动态生成javascript,javascript,node.js,express,d3.js,pug,Javascript,Node.js,Express,D3.js,Pug,我试图为d3图形动态生成json数据。我不确定这是否是最佳策略,但我的尝试本质上是将d3代码放在脚本标记中,然后通过在express中传递的对象生成json 我遇到的问题是,我不确定如何在脚本标记中动态生成json数据。如果有更好的代码设计策略可以动态生成json对象,并将其传递给d3以使用jade/pug生成图表,请告诉我。下面的代码不起作用 代码如下: 玉码 //...content above, d3 to draw the graph below svg(height
//...content above, d3 to draw the graph below
svg(height="800", width="1000").graph
script.
var svg = d3.select("svg"),
var data = #{dataObj}; // <--? how do I pass the json data object passed via route.js within the script tag?
Uncaught SyntaxError: Unexpected identifier
var data = [object Object];
控制台
//...content above, d3 to draw the graph below
svg(height="800", width="1000").graph
script.
var svg = d3.select("svg"),
var data = #{dataObj}; // <--? how do I pass the json data object passed via route.js within the script tag?
Uncaught SyntaxError: Unexpected identifier
var data = [object Object];
提前感谢您的帮助 您正在将一个对象传递到一个没有键的对象中
尝试
res.render('drawGraph',{dataObj:dataObj})代码>您正在将一个对象传递到一个没有键的对象中
尝试res.render('drawGraph',{dataObj:dataObj})代码>如@Stretch0所述,您缺少对象的键
res.render('drawGraph', { dataObj: dataObj});
但单凭这一点并不能解决问题。您必须在pug模板中使用JSON.stringify来显示对象
res.render('drawGraph', { dataObj: dataObj});
从
到
`#{}转义字符,所以为了避免转义,可以使用!{}就像@Stretch0提到的那样,您缺少对象的键
res.render('drawGraph', { dataObj: dataObj});
但单凭这一点并不能解决问题。您必须在pug模板中使用JSON.stringify来显示对象
res.render('drawGraph', { dataObj: dataObj});
从
到
`#{}转义字符,所以为了避免转义,可以使用!{}感谢JSON.stringify的回答。请注意,在我使用的快速版本(最新版本)中,您不需要使用dataObj:dataObj。由于它们是相同的名称,我可以单独使用dataObj,并且它会传递。如果我想使用一个不同的名称,那么是的,我需要像myDataObj:dataObj或dataObj:{key:value}这样做。如果我传入一个之前声明过的对象,它工作正常,如问题中所述。感谢JSON.stringify的回答。请注意,在我使用的快速版本(最新版本)中,您不需要使用dataObj:dataObj。由于它们是相同的名称,我可以单独使用dataObj,并且它会传递。如果我想使用一个不同的名称,那么是的,我需要像myDataObj:dataObj或dataObj:{key:value}这样做。如果我传递了一个之前声明的对象,它可以正常工作,如问题中所述。