在nodejs和jade之间传递对象

时间:2015-03-27 15:48:00

标签: node.js express pug jade4j

我的server.js

中有以下代码
  var cddata = [];
  body.rows.forEach(function(doc) {
  cddata.push([{id: doc.id, name: doc.key, text:doc.value.Time, group: 1}]);              
  });
  response.render('timeline', {cddata: JSON.stringify(cddata)});

我的Jade视图文件中有以下内容

script(src='vis/dist/vis.js')        
link(rel="stylesheet", href="vis/dist/vis.css", type="text/css")

script.
    //alert(cddata);    
    var options = {};
    var data = new vis.DataSet(cddata);
    var container = document.getElementById('visualization');
    new vis.Timeline(container, data, options);

但是,不会呈现与图表相关的任何内容。我认为对象没有正确传递给jade文件。请帮忙!

另外,有没有办法验证Jade中的传入对象?提醒似乎不起作用。 感谢

2 个答案:

答案 0 :(得分:0)

您的玉中的<script>是浏览器端脚本,因此无法访问模板生成范围中的变量。您需要将数据输出为JSON并使用浏览器端JavaScript进行读取,如下所示:

script(src='vis/dist/vis.js')        
link(rel="stylesheet", href="vis/dist/vis.css", type="text/css")

script.
    var chartData = JSON.parse('#{cddata}')
    var options = {};
    var data = new vis.DataSet(chartData);
    var container = document.getElementById('visualization');
    new vis.Timeline(container, data, options);

答案 1 :(得分:0)

经过深思熟虑后,以下工作将对象从节点服务器传递到Jade文件上的客户端服务器脚本。

在server.js上,其中dbdata是一个JSON对象数组

response.render('timeline', {dbdata:dbdata});

在玉器文件上,

script.
   var chartData = !{JSON.stringify(dbdata)};

谢谢,