Я хотел бы реализовать файл chart.js, я последовал примеру ЗДЕСЬ , он хорошо работал с данными выборочного массива, но теперь я хочу поместить оперативную выборку данных в формате json со своего сервера.Не удалось найти способ.
это моя html-страница
<ion-header>
<ion-navbar>
<ion-title>results</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-card >
<ion-card-header>
Bar Chart
</ion-card-header>
<ion-card-content>
<canvas width="800" height="800" #barCanvas></canvas>
</ion-card-content>
</ion-card>
</ion-content>
и моя страница .ts
import { Component, ViewChild } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Chart } from 'chart.js';
import { LoadingController, AlertController } from 'ionic-angular';
import {Http, Headers, RequestOptions} from "@angular/http";
import 'rxjs/add/operator/map';
@IonicPage()
@Component({
selector: 'page-results',
templateUrl: 'results.html',
})
export class ResultsPage {
@ViewChild('barCanvas') barCanvas;
barChart: any;
selectedOption:any;
items:any;
val : any=[];
val2 : any=[];
constructor(public navCtrl: NavController, public navParams: NavParams, private http: Http, public loading: LoadingController,
public alertCtrl: AlertController) {
}
ionViewDidLoad() {
this.selectedOption = this.navParams.get('options');
var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
let data = {
option: this.selectedOption
};
let loader = this.loading.create({
content: 'Processing please wait...',
});
loader.present().then(() => {
this.http.post('mydomain/fetch_data.php',data, options)
.map(res => res.json())
.subscribe(res => {
loader.dismiss()
this.items=res.server_response;
console.log(this.items);
this.items.map((item)=>{
this.val1.push(item.options);
});
this.items.map((item)=>{
this.val2.push(item.result);
});
});
});
this.showChart();
}
showChart(){
this.barChart = new Chart(this.barCanvas.nativeElement, {
type: 'bar',
data: {
labels: this.val1,
datasets: [{
label: '# of Votes',
data: this.val2,
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
xAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
}
}
Я получил данные json, но преобразовал их вдругой массив, например метки: [«Красный», «Коричневый», «Синий», «Желтый», «Зеленый», «Фиолетовый», «Оранжевый»] и данные: [11, 15, 22, 4, 6, 2, 3], так что я могу использовать его как val1 и val2, как показано выше, это моя задача.
Заранее спасибо