我的node.js项目有一个jade模板。我想将一个对象发送到jade模板并将其传递给页面内的一个函数(以呈现某些内容)。
我确信我会像这样从服务器发送正确的内容
res.render(__dirname + '/pages/viz.jade', {
vizJson: newJson,
});
在客户端我做这样的事情:
script
sunburst(#{vizJson})
因此,在脚本函数中,我想调用一个函数来创建我在服务器端创建的json的可视化。
问题在于渲染时我有类似sunburst([Object object])
的东西。我也尝试发送JSON的字符串化版本,但当我JSON.parse(#{vizJson})
时,它会抱怨Unexpected token &
。
我发送的json总是不同的,并且具有不同的深度。
有谁知道该怎么做?
由于
答案 0 :(得分:75)
我希望这会对某人有所帮助。我这样解决了:
script
sunburst(!{JSON.stringify(vizJson)})
注意!
和{...}
包装stringify方法。
答案 1 :(得分:3)
要使其正常工作,您需要在服务器上进行字符串化。
res.render(__dirname + '/pages/viz.jade', {
vizJson: JSON.stringify(newJson),
});
然后,正如您所提到的,在客户端上解析JSON。
script
sunburst(JSON.parse(#{vizJson}))
希望有所帮助!
答案 2 :(得分:2)
奇怪的是,对我而言,解决方案不涉及JSON.parse
。我在服务器上对我的对象进行了字符串化,并使用了!{vizJson}
方法并将我的对象设置为客户端。
根据文档,非转义字符串插值:http://jade-lang.com/reference/interpolation/
答案 3 :(得分:0)
在JS方面,你发回
res.render(__dirname + '/pages/viz.jade', {
vizJson: JSON.stringify(newJson),
});
在HTML方面,我发现了类似的内容:
JSON.parse( '!{vizJson}' )
的工作原理。