我正在尝试从 socket io 获取数据并使用 angularJs 在图形上显示数据。我正在从服务器获取正确的数据,但是当我试图显示它时,我得到:“没有数据要显示”。我试图调试我的 Controller ,我看到我正在获取数据,但我的 HTML 上的某些 Angular 没有显示它。 我也尝试使用 Async.js,但它仍然不起作用。
我的 Controller 代码:
$scope.graph2,data2 = [];
socketFactory.emit('getTemplateStatistics', null);
socketFactory.on('sendTemplateStatistics', function(result) {
for (var i=0; i < result.length; i++) {
var temp = {label: result[i]._id, value: ""+result[i].total};
data2.push(temp);
}
$scope.graph2 = {
chart: {
caption: "Age profile of website visitors",
subcaption: "Last Year",
startingangle: "120",
showlabels: "0",
showlegend: "1",
enablemultislicing: "0",
slicingdistance: "15",
showpercentvalues: "1",
showpercentintooltip: "0",
plottooltext: "Age group : $label Total visit : $datavalue",
theme: "fint"
},
data2
};
});
我的 HTML 代码:
<div class="statistics view indent">
<div class="container" style="margin-top:10px">
<header>
<h3>Statistics Preview Displayer</h3>
</header>
<div>
<fusioncharts
width="600"
height="400"
type="pie3d"
datasource="{{ graph2 }}"
></fusioncharts>
</div>
<a href="#/preferences" class="btn btn-primary" style="float: right;">Go back</a>
</div>
</div>
最佳答案
我不认为这是套接字问题。可能 '$scope.graph2' 在 for 循环完成执行之前被分配,因此 'data2' 没有值(value)。尝试像这样更改代码
$scope.graph2,data2 = [];
socketFactory.emit('getTemplateStatistics', null);
socketFactory.on('sendTemplateStatistics', function(result) {
for (var i=0; i < result.length; i++) {
var temp = {label: result[i]._id, value: ""+result[i].total};
data2.push(temp);
if(i == result.length - 1) { // To ensure $scope.graph2 is assigned only after for loop completes and data has all values
$scope.graph2 = {
chart: {
caption: "Age profile of website visitors",
subcaption: "Last Year",
startingangle: "120",
showlabels: "0",
showlegend: "1",
enablemultislicing: "0",
slicingdistance: "15",
showpercentvalues: "1",
showpercentintooltip: "0",
plottooltext: "Age group : $label Total visit : $datavalue",
theme: "fint"
},
data2
};
}
}
});
这样 $scope.graph2 只有在 for 循环完成后才被赋值,所以 data2 不会为 null
关于javascript - 使用angularJs显示来自socket io的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429050/