【问题标题】:Why is my google chart javascript not doing anything?为什么我的谷歌图表 javascript 没有做任何事情?
【发布时间】:2017-03-10 00:40:51
【问题描述】:

在我的 home.scala.html 页面的 head 中,我有一个全面的 javascript 来调用谷歌图表,使用从 scala 传递的地图,使用 java play framework

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">

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

function drawChart() {

  var data = new google.visualization.DataTable();
  data.addColumn('date', 'xVariable');
  data.addColumn('number', 'yVariable');

  var mapVariable = @mapFromScala;

  console.log("Hello world");

  for (var mapKey in mapVariable) {
  data.addRows([
    [new Date(mapKey) , mapVariable[mapKey]]
  ]);
  }

  var options = {
    chart: {
      title: 'This is my map',
      subtitle: 'it has a subtitle'
    },
    width: 1000,
    height: 600
  };

  var chart = new google.charts.Line(document.getElementById('chartId'));

  chart.draw(data, options);
}

</script>

在体内

<div id="chartId"></div>

为什么我没有得到任何回报?即使是“Hello world”console.log 似乎也没有显示在 SBT 控制台中。

【问题讨论】:

  • 你的Javascript代码真的被执行了吗? IE。如果您将console.log 放在脚本的最顶部,是否会记录该消息?
  • 是的,似乎 javascript 没有被执行,尽管在工作谷歌图表(即从文档中提取的示例)开头的 console.log 也没有出现在 sbt 控制台中。
  • gstatic 脚本已导入,为了清楚起见,现在包含在问题中
  • console.log 不会(也不应该)出现在 SBT 中

标签: javascript html scala playframework google-visualization


【解决方案1】:

地图变量必须作为字符串引入。 JSON 可以用于此,但

var mapVariable = "@mapFromScala"

同样有效,尽管从 String 转换回 Map 的过程并不优雅。

这个过程描述为here,除了数据类型不同和

data.addRows([[xVariable, yVariable]])

被调用而不是

jsArray.xVariable = yVariable;

【讨论】:

    猜你喜欢
    • 2021-08-11
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2015-06-30
    • 2013-04-19
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多