Я новичок в mean-stack, и я пытаюсь отобразить свои значения из mongodb с помощью amchartsJS, я использовал api.js для получения своих данных, а затем контроллеры для передачи переменной в мой html. Моя таблица работает правильно и отображает значения из 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, но я не знаю, как это сделать в среднем стеке:
"dataProvider":
[
<?php while($row = mysqli_fetch_array($result)): ?>
{
"TRENDX": "<?php echo $row['trendx'] ?>",
"Values": <?php echo $row['counter']; ?>
},
<?php endwhile; ?>
]
что вы имеете в виду под несколькими диаграммами, я использовал для этого amchartsJS версии 3, а затем для отображения только что использованного div диаграммы <div id = "chartdiv"> </div>





вы используете его как угловое выражение. вы можете напрямую получить доступ к значению в конфигурации 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
}
} );
Я пробовал, но это дает мне ReferenceError: person is not defined
плохо, вы обращаетесь к человеку из своей модели ref blooddonationmanagement.blooddonations, вам нужно создать dataProvider, перебирая app.blooddonations и создавая массив объектов {"donor":, "count"} и то же самое, что вы можете использовать в конфигурации
Я тоже об этом думаю, но не знаю, куда поставить и как это назвать
Вам необходимо инициализировать диаграмму с вашего контроллера, изменить свойства 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
}
});
}
}
Есть несколько диаграмм, верно? Не могли бы вы рассказать больше HTML, как вы получаете все эти диаграммы