我试图在我的 Rails 应用程序中包含一个谷歌饼图,我遇到了一个我认为特别奇怪的错误。
问题是,当我输入数字时,图表显示完美(将我的两个输入数字显示为饼图的两个组成部分,等于它们的总和),但是当我尝试为其提供动态数据时,它似乎 PICK UP 数据但是不要正确使用它——而是在空白图表中将这两个数字显示为条子。代码示例:
这完美地工作,变成了具有正确值的漂亮饼图(已售出和左侧,下图):
<div id="chart_div"></div>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var sold = 406;
var left = 38;
var data = google.visualization.arrayToDataTable([
['Pounds', 'Sold/Left'],
['Pounds Sold', sold],
['Left', left]
]);
var options = {
};
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
然而,这会生成一个带有悬停的图表,显示(在这种情况下)完全相同的数字(406 和 38),但两个图表部分非常小,约占图表交易量的 1%(与理想的 100%)。剩下的 99% 的图表是空白的:
<div id="chart_div" data-sold=<%= @animal.pounds_sold.to_i %> data-left=<%= @animal.pounds_left.to_i %> ></div>
// Here, the numbers equal 406 and 38, as in the above.
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var sold = $(document).find('#chart_div').attr('data-sold');
var left = $(document).find('#chart_div').attr('data-left');
var data = google.visualization.arrayToDataTable([
['Pounds', 'Sold/Left'],
['Pounds Sold', sold],
['Left', left]
]);
var options = {
};
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
一个可能的线索是,当我将鼠标悬停在此错误图表中的部分上时,虽然悬停显示正确的数字(406、38),但它表示这些部分分别仅占饼图的 1% 和 0.2%,即使其余部分饼图是空白的(并且没有悬停/悬停值)。
有什么想法吗?我猜我犯了一些 javascript/jquery 罪行,因为我对它很陌生,但我不知道是什么。
谢谢!
编辑——另一个奇怪的事情。我试图看看在动态数字和直数的混合场景中会发生什么,即对上面的动态版本进行以下修改:
...
var other = 50;
var sold = $(document).find('#chart_div').attr('data-sold');
var left = $(document).find('#chart_div').attr('data-left');
var data = google.visualization.arrayToDataTable([
['Pounds', 'Sold/Left'],
['Pounds Sold', sold],
['Left', left],
['Test', other]
]);
...
这(对我来说)莫名其妙地导致根本没有图表。