gpt4 book ai didi

javascript - 为什么从 AngularJS Controller 内部加载时 google graph 不工作。浏览器变白,控制台没有任何错误

转载 作者:数据小太阳 更新时间:2023-10-29 05:48:20 24 4
gpt4 key购买 nike

这样我的直方图就可以正常工作了,当我像在页面加载期间一样加载它时。

$(document).ready()
{
x = new Array(10);
for (var i = 0; i < 10; i++) {
x[i] = new Array(2);
x[i][0]="txt";
x[i][1]=100;

}
loadChart2(x);
}

Google 柱形图代码:(取自 Google charting api)

function loadChart2 (histValues)
{
console.log('histValues:'+histValues);
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable(histValues);

var options = {
hAxis: {title: 'Score', titleTextStyle: {color: 'red'}}
};

var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
};

我的问题:

但是当我从我的 angularJS Controller 中调用 loadChart2() 时,整个屏幕变成白色并且浏览器控制台中没有显示任何错误

$http({method: 'GET', url: urlGetHistogramData, timeout: maxTime})
.success(function (data) {
x=new Array(data.score_hist.length);
var i=0;
$.each(data.score_hist, function(){
x[i] = new Array(2);
x[i][0]=this.interval_start;
x[i][1]=this.count;
i++;
});


loadChart2(x);

});

调试信息:

我可以在控制台中看到打印了 interval_startcount 值,因此服务返回值正常

另外,我可以看到 histValues 从 loadChart() 函数期待地打印在控制台上。

这是一个相关的问题,如果你想要更深入的细节 How to create a historgram from json

只要我将 loadChart2() 函数放入任何 AngularJS onClick 或任何函数中,我就会在控制台中看到完全白屏且没有错误。似乎没有人对我的问题发表任何评论,我会根据我对此的发现更新此页面。

编辑我正在寻求解决这个问题的方法,我问了一个与这个问题相关的问题 https://stackoverflow.com/questions/16816782/how-set-charts-data-in-google-chart-tool-directive-module-from-a-dynamically-po

最佳答案

关键是在 Google 图表库加载后手动引导 Angular 模块:

http://jsfiddle.net/nCFd6/22/

应用

var app = angular.module('app', []);

指令

app.directive('chart', function() {

return {
restrict: 'E',
replace: true,
scope: {
data: '=data'
},
template: '<div class="chart"></div>',
link: function(scope, element, attrs) {

var chart = new google.visualization.LineChart(element[0]);
var options = {};

scope.$watch('data', function(v) {

var data = google.visualization.arrayToDataTable(v);
chart.draw(data, options);

});

}
};

});

Controller

app.controller('ChartController', function($scope) {

$scope.scoreHistory = [];
$scope.loadDataFromServer = function() {

var x = [
['interval', 'count']
];

var scoreHistory = [
{
intervalStart: 12,
count: 20
},
{
intervalStart: 100,
count: 200
},
{
intervalStart: 200,
count: 50
},
{
intervalStart: 250,
count: 150
}
];

angular.forEach(scoreHistory, function(record, key) {

x.push([
record.intervalStart,
record.count
]);

});

$scope.scoreHistory = x;

};

});

伏都教

google.setOnLoadCallback(function() {

angular.bootstrap(document, ['app']);

});

google.load('visualization', '1', {packages: ['corechart']});

查看

<div ng-controller="ChartController">
<button ng-click="loadDataFromServer()">load data</button>
<chart data="scoreHistory"></chart>
</div>

如您在此示例中所见,我制作了一个图表指令以便您可以重复使用它。

关于javascript - 为什么从 AngularJS Controller 内部加载时 google graph 不工作。浏览器变白,控制台没有任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com