繁体   English   中英

Express和Jade:将变量放入JavaScript

[英]Express and Jade: getting a variable into JavaScript

我有以下问题:在服务器端,我正在创建图形。 我想使用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文件的正确方法吗? 我还有其他问题吗?

您将data对象输出为字符串,因此在输出的html中可能会看到类似var data = '[Object object]'的内容。

在您的Jade模板中做类似的事情应该可以解决此问题:

script.
  var graphData = !{graphData}

让我知道这会有所帮助!

编辑:更新与阿德里安的评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM