我有以下问题:在服务器端我正在创建一个图表。我想使用Sigma.js库显示此图。作为参考,生成的数据例如如下所示:
{ nodes:
[ { id: '423ed89a-491d-416b-9c19-13fcb6db45bc',
label: 'Nevens Jens',
x: 0.5935997352935374,
y: 0.36792555125430226,
size: 5,
color: '#fff' } ],
edges: [] }
在我的Express应用程序中,我使用以下代码呈现Jade页面:
app.get('/network', function (req, res) {
//Function calls to generate graph
function someCallback(data) {
res.render('graph', {graphData: data});
}
}
接下来,在我的Jade文件中,我想将此数据分配给变量,以便我可以在JavaScript文件中使用它:
script(src='/javascripts/vendor/sigma.min.js')
script.
var graphData = '#{graphData}'
script(src='/javascripts/graph.js')
我的JavaScript文件如下所示:
$(document).ready(function () {
console.log(graphData.nodes);
console.log(graphData.edges);
var s = new sigma({
graph: graphData,
renderer: {
container: document.getElementById('graph-container'),
type: 'canvas'
}});
s.refresh();
});
问题是,当我在浏览器中查看控制台时,它会显示undefined
两次。
这是将数据传输到JavaScript文件的正确方法吗?我还有其他错误吗?
答案 0 :(得分:2)
您将data
对象作为字符串输出,因此您可能会看到类似的内容
var data = '[Object object]'
你输出了html。
在jade模板中执行此类操作可以解决此问题:
script.
var graphData = !{graphData}
让我知道这有帮助!
编辑:更新Adrian的评论