javascript - 我想将 Node.js 中呈现的值用于 Google Chart

标签 javascript node.js

我想将 Node.js 中呈现的值用于 Google Chart。

但是,我无法成功地将服务器端呈现的变量传递给客户端的 javascript。

我正在使用 Node.js、Express 和 Pug。 这是代码。

HTML(index.pug)

script(type='text/javascript', src='https://www.gstatic.com/charts/loader.js')

#chart_div

我在javascript中使用了“tests”变量如下,但是并不顺利

JavaScript

google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {

      var data = new google.visualization.DataTable();
      data.addColumn('number', 'X');
      data.addColumn('number', 'Dogs');

      for(var test of tests)
      {
         data.addRows([test]);
      }

      var options = {
        hAxis: {
          title: 'Time'
        },
        vAxis: {
          title: 'Popularity'
        }
      };

      var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

      chart.draw(data, options);
    }

Node .js

var tests = [[0, 0],[1, 10],[2, 23],[3, 17],[4, 18]];
res.render('index', {
    tests: tests
});

如何在客户端将“测试”变量传递给 javascript?

最佳答案

为了在您的页面中定义服务器端 Javascript 变量,您必须插入 PUG 语法以将 Javascript 变量定义呈现到您的页面中。为您tests变量,您可以在模板中添加类似这样的内容:

script.
    var tests = #{tests};

然后,将您传递到模板中的内容更改为:

res.render('index', {
    tests: JSON.stringify(tests)
});

然后,当页面呈现时,它将显示为:

<script>
    var tests = [[0, 0],[1, 10],[2, 23],[3, 17],[4, 18]];
</script>

您的变量将在您的页面中定义。

您也不必单独定义变量,只需输入 #{tests}就在您想要使用该值的 Javascript 中间,并将数组插入到需要的地方。它会以任何一种方式工作。


附言你不应该用 for/in 迭代一个数组因为它会迭代对象的所有属性,而不仅仅是有时会起作用但不一定总是起作用的数组条目(可能包括对象的其他属性)。在 ES5 中,使用传统的 for(var i = 0; i < array.length; i++)循环或使用 .forEach() .在 ES6 中,使用 for/of .

关于javascript - 我想将 Node.js 中呈现的值用于 Google Chart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45969513/

相关文章:

node.js - 使用 max-age=0,must-revalidate 表示静态服务器缓存控制

mysql - 我的 api 响应在前端未定义

javascript - 我无法安装 puppeteer

macos - npm 在 OSX Lion 中不起作用

javascript - 将选中的复选框绑定(bind)到 Ember.js 中的数组属性

javascript - Cordova 3.4 FileReader 不工作(没有 onloadend)

javascript - HTML 加载不工作

javascript - 为什么我的光标在鼠标按下时变成 block 图标?

javascript - 使用客户端和服务器在两个单独的文件夹中将 Node 应用程序部署到 heroku

javascript - 无法在 Javascript 中访问我的二维数组