我正在学习Ionic,我开始使用一些API,现在我在使用CountryAPI(https://fabian7593.github.io/CountryAPI/)时遇到了一些麻烦。我正在使用GET方法接收一个json,其中包含所有在其名称中“联合”的国家/地区的信息。这是我的代码:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import firebase from 'firebase'
import { HTTP } from '@ionic-native/http'
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
public resultados: any
constructor(public navCtrl: NavController, public http: HTTP) {
this.mget()
}
sair(){
firebase.auth().signOut().then(() => this.navCtrl.setRoot('login'))
}
mget(){
let url = 'http://countryapi.gear.host/v1/Country/getCountries?pName=united'
this.http.get(url, {}, {}).then( data => {
console.log(data.data); // data received by server
let results = JSON.parse(data['_body']).results
})
}
}
当我在console.log中收到数据时,它以json格式显示一切都很好,但是不可能订阅离子原生的http.get方法,如果我尝试类似
的话for(let i = 0; i < news.length(); i ++){
console.log(news[i])
this.noticias.push({
name: news[i].name,
nativeName: news[i].nativeName
})
}
不好,它指责news.length()不是函数。
我需要获取矢量中的所有数据,这样我就可以在我的应用程序中的ion-list列表中显示它。
答案 0 :(得分:-1)
要从国家/地区API获取JSON数据,您应该像这样添加提供程序:
ionic g provider countryService
然后按照countryService.ts中的以下代码点击API
// ******************************** listing API ***********************************
load() {
console.log(' RestServiceProvider Load Method fro listing');
if (this.data) {
return Promise.resolve(this.data);
}
// don't have the data yet
return new Promise(resolve => {
this.http.get("http://countryapi.gear.host/v1/Country/getCountries?pName=united")
.map(res => res.json().response)
.subscribe(data => {
this.data = data;
resolve(this.data);
});
});
}
要获取国家/地区的名称,您应该在主页中调用此方法,如下所示:
this.countryService.load().then(data => {
this.country= data;
});
使用主页类的 html 在UI中显示名称:
<ion-list>
<ion-item *ngFor="let countrylist of country">
<h2 style="color: tomato">User Id: {{countrylist.name}}</h2>
<h4>{{countrylist.nativeName}}</h4>
</ion-item>
</ion-list>