javascript - javascript中的smarty变量

标签 javascript php jquery google-visualization smarty

我正在尝试使用 google-charts 生成饼图。当我使用静态数据时它工作正常,现在我想使用动态数据生成图表。 来 self 的 data.php 文件。我已经生成了这些数据: chart_data = [["执行",100],["未运行",0],["通过",98],["失败",1],["阻塞",0]]

图.tpl

<div id="container1" display:inline-block">
   <script language="JavaScript">
    function drawChart() {
       // Define the chart to be drawn
       var data = new google.visualization.DataTable({/literal}'{$chart_data}'{literal});
       data.addColumn('string', 'Status');
       data.addColumn('number', 'Percentage');
       /*

       data.addRows([
          ['Passed', 45.0],
          ['Failed', 26.8],
          ['Blocked', 12.8],
        ['Not Run', 8.5]
          ]);
       */
       // Set chart options
       var options = {'title':'Overall Test Progress',
          'width':420,
          'height':310};

       // Instantiate and draw the chart.
       var chart = new google.visualization.PieChart(document.getElementById('container1'));
       chart.draw(data, options);
    }
    google.charts.setOnLoadCallback(drawChart);
    </script>
    {/literal}
  </div>

我不确定如何将 chart_data 传递给 dataTable()。如何正确传递 chart_data

最佳答案

为了使用构造函数参数创建DataTable
它必须是特定的 json 格式,as found here

但是如果你有一个简单的数组, 你可以使用静态方法 --> arrayToDataTable

var data = google.visualization.arrayToDataTable("{$chart_data}", true);

true 第二个参数表示第一行是数据而不是列标题...

请参阅以下工作片段...

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

function drawChart() {
  var data = google.visualization.arrayToDataTable([["executed",100],["not_run",0],["passed",98],["failed",1],["blocked",0]], true);
  var options = {
    title: 'Overall Test Progress',
    width: 420,
    height: 310
  };
  var chart = new google.visualization.PieChart(document.getElementById('container1'));
  chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="container1"></div>

关于javascript - javascript中的smarty变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46093708/

相关文章:

javascript - Android 上的 jQuery-mobile 转换抖动

JavaScript 更改提交表单上的输入样式

php - 在 codeigniter 中删除 index.php(在本地工作正常但在生产环境中不工作)

php - 发布前离线保存数据

jquery - 停止 jQueryUI 效果

javascript - 如何以编程方式更改文件输入的 FileList?

javascript - 添加过渡到可折叠数据表

javascript - 注册事件时的事件处理程序查询?

javascript - 如何在angular js中自动大写输入字段?

javascript - 如何将对象作为方法参数传递到 javascript 中而不出现意外的标识符错误