如何使用 amcharts 从 mongodb 显示 getdata
How to display getdata from mongodb using amcharts
我是 mean-stack 的新手,我正在尝试使用 amchartsJS 从 mongodb 显示我的值,我使用 api.js 获取我的数据,然后控制器将变量传递给我的 html。我的 table 工作正常并显示来自 mongodb 的值,但我如何将其实现到 chartsJS?
所以我在 html
中尝试了这个
<script>
var chart = AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": [ {
"donor": "{{person.donors_name}}",
"count": 501.9
} ],
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
} );
</script>
但是结果给了我{{person.donors_name}}
这是我获取值的代码:
api.js
router.get('/blooddonationmanagement', function(req, res) {
Blooddonation.find({},function(err, blooddonations) {
res.json({ success: true, blooddonations: blooddonations });
});
});
blooddonationCtrl.js
angular.module('blooddonationControllers', [])
.controller('blooddonationCtrl', function(Blooddonation,$scope) {
var app = this;
function getBlooddonations() {
Blooddonation.getUsers().then(function(data) {
app.blooddonations = data.data.blooddonations;
});
}
table.html
<tr ng-repeat="person in blooddonationmanagement.blooddonations">
<td>{{ person.donation_no }}</td>
<td>{{ person.donors_name }}</td>
</tr>
我已经使用 php 尝试过此操作,并使用 mysqldb 工作,但我不知道如何在 mean-stack 中执行此操作:
"dataProvider":
[
<?php while($row = mysqli_fetch_array($result)): ?>
{
"TRENDX": "<?php echo $row['trendx'] ?>",
"Values": <?php echo $row['counter']; ?>
},
<?php endwhile; ?>
]
您正在将其用作 angular 表达式。您可以直接访问 Amchart 配置中的值,例如:
AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": [ {
"donor": person.donors_name,
"count": 501.9
} ],
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
} );
您必须从控制器初始化图表,根据需要修改 dataProvider 属性:
angular.module('blooddonationControllers', [])
.controller('blooddonationCtrl', function(Blooddonation,$scope) {
var app = this;
function getBlooddonations() {
Blooddonation.getUsers()
.then(function(data) {
app.blooddonations = data.data.blooddonations;
initChart();
return true
});
}
function initChart() {
var data_series = [];
for(let key in app.blooddonations) {
data_series.push({
"donor": app.blooddonations[key].donors_name,
"count": 501.9
});
}
var chart = AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": data_series,
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
});
}
}
我是 mean-stack 的新手,我正在尝试使用 amchartsJS 从 mongodb 显示我的值,我使用 api.js 获取我的数据,然后控制器将变量传递给我的 html。我的 table 工作正常并显示来自 mongodb 的值,但我如何将其实现到 chartsJS?
所以我在 html
中尝试了这个<script>
var chart = AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": [ {
"donor": "{{person.donors_name}}",
"count": 501.9
} ],
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
} );
</script>
但是结果给了我{{person.donors_name}}
这是我获取值的代码:
api.js
router.get('/blooddonationmanagement', function(req, res) {
Blooddonation.find({},function(err, blooddonations) {
res.json({ success: true, blooddonations: blooddonations });
});
});
blooddonationCtrl.js
angular.module('blooddonationControllers', [])
.controller('blooddonationCtrl', function(Blooddonation,$scope) {
var app = this;
function getBlooddonations() {
Blooddonation.getUsers().then(function(data) {
app.blooddonations = data.data.blooddonations;
});
}
table.html
<tr ng-repeat="person in blooddonationmanagement.blooddonations">
<td>{{ person.donation_no }}</td>
<td>{{ person.donors_name }}</td>
</tr>
我已经使用 php 尝试过此操作,并使用 mysqldb 工作,但我不知道如何在 mean-stack 中执行此操作:
"dataProvider":
[
<?php while($row = mysqli_fetch_array($result)): ?>
{
"TRENDX": "<?php echo $row['trendx'] ?>",
"Values": <?php echo $row['counter']; ?>
},
<?php endwhile; ?>
]
您正在将其用作 angular 表达式。您可以直接访问 Amchart 配置中的值,例如:
AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": [ {
"donor": person.donors_name,
"count": 501.9
} ],
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
} );
您必须从控制器初始化图表,根据需要修改 dataProvider 属性:
angular.module('blooddonationControllers', [])
.controller('blooddonationCtrl', function(Blooddonation,$scope) {
var app = this;
function getBlooddonations() {
Blooddonation.getUsers()
.then(function(data) {
app.blooddonations = data.data.blooddonations;
initChart();
return true
});
}
function initChart() {
var data_series = [];
for(let key in app.blooddonations) {
data_series.push({
"donor": app.blooddonations[key].donors_name,
"count": 501.9
});
}
var chart = AmCharts.makeChart( "chartdiv", {
"type": "pie",
"theme": "none",
"dataProvider": data_series,
"valueField": "count",
"titleField": "donor",
"balloon":{
"fixedPosition":true
},
"export": {
"enabled": true
}
});
}
}