我目前正在练习Angular2和Ionic2。我想从API检索数据(例如:https://www.cryptocompare.com/api/data/coinlist/)。要检索数据,我使用加载方法创建了一个提供程序:
load() {
if (this.currencies) {
// already loaded data
console.log('already has data');
return Promise.resolve(this.currencies);
}
var url = this.baseUrl + '/coinlist';
// don't have the data yet
return new Promise(resolve => {
this.http.get(url)
.map(res => res.json().Data)
.subscribe(data => {
this.currencies = data;
resolve(this.currencies);
console.log(this.currencies);
});
});
}
为了显示数据我已经制作了以下模板结构:
<ion-row *ngFor="let currency of currencies | orderBy : ['-Name'] | keys" (click)="itemTapped($event, currency)">
<ion-col width-10>
1
</ion-col>
<ion-col width-60>
{{currency.Name}}
</ion-col>
<ion-col width-30>
{{currency.FullName}}
</ion-col>
</ion-row>
<ion-row>
这里我使用Pipe,因为响应是Objects。但是,我似乎无法使其发挥作用。 Console.log向我显示响应仍然是带有对象的对象,我猜测问题就在那里。 (console.log还在控制台中显示两次?)
控制台: Console.log of this.currencies
参考Pipe类:
@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
transform(value, args:string[]) : any {
if (!value) {
return value;
}
let keys = [];
for (let key in value) {
keys.push({key: key, value: value[key]});
}
return keys;
}
}
视图显示一个空列表,控制台中没有输出错误。有谁知道如何解决这个问题?非常感谢
答案 0 :(得分:0)
我可能错了,但它适用于AngularJS 1.x。
而不是使用对象将它们更改为数组:
$http.get('/*request*/').success(function(data){
angular.forEach(data, function(value, key){
users.push(value);
});
/*your code*/
});