【发布时间】:2017-08-21 12:45:57
【问题描述】:
我从 Ionic 和 Angular 开始,但我遇到了变量类型的问题。 我正在查询一个输出元素数组的 API。
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {PostService } from '../_providers/post-service';
@Component({
selector: 'page-home',
templateUrl: 'home.html',
providers:[PostService]
})
export class HomePage {
public posts: any;
private start:number=0;
constructor(public navCtrl: NavController, public postService: PostService) {
this.getPost();
}
getPost(){
return new Promise(
resolve => {
this.postService.load(this.start)
.then(data => {
console.log(data);
for(let post of data) {
this.posts.push(post);
}
resolve(true);
});
});
}
doInfinite(infiniteScroll:any) {
console.log(this.start);
this.start+=10;
this.getPost().then(()=>{
infiniteScroll.complete();
});
}
likePost(post){
post.likes++;
}
}
第 23 行,我有这个问题: issue
console.log 返回: console.log
最后,PostService 类如下所示:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class PostService {
perpage:number = 10;
constructor(public http: Http) {}
load(start:number=0) {
return new Promise(resolve => {
this.http.get('http://api.voyonsvoir.fr/?[limit]='+this.perpage+'&filter[skip]='+start)
.map(res => res.json())
.subscribe(data => {
resolve(data.posts);
});
});
}
}
感谢您的帮助。
【问题讨论】:
-
将您的帖子数组初始化为空。尝试除 for..of 以外的其他方法,尝试 for..in 或 javascript forEach 看看这些是否有效。
-
谢谢 rrd。这是否是声明一个空数组的正确方法 public posts: string[]; > 另外,当我尝试使用 forEach 时,我遇到了这个错误:类型 {} 上不存在属性“forEach”
-
实际上 for..in 确实有效。但是 for(let post in data) 只返回数组键而不返回内容
-
从我的角度来看,我做了一些丑陋的事情:
getPost(){ return new Promise( resolve => { this.postService.load(this.start) .then(data => { for(let post in data) { this.posts.push(data[post]); } resolve(true); }); }); }
标签: angularjs typescript ionic-framework