我的代码:
.ts
export class HomePage implements OnInit {
datas: FirebaseListObservable<any[]>;
// datas: FirebaseListObservable<Item[]>;
constructor(public navCtrl: NavController, public authData: AuthData, public af: AngularFire) { }
ngOnInit() {
this.datas = this.af.database.list('/datas');
//console.log('datas'+JSON.stringify(this.datas));
}
loadData(refresher?: any) {
callToProviderApi().subscribe(newData => {
this.datas = newData;
}, err => console.log(err),
() =>if(refresher)
refresher.complete());//call complete on subscribe complete
}
doRefresh(datas) {
this.loadData(datas);
}
.html
<ion-refresher (ionRefresh)="doRefresh()">
<ion-refresher-content>
pullingIcon="arrow-dropdown"
</ion-refresher-content>
<ion-list>
<ion-item *ngFor="let data of datas | async" class="pqr">
<ion-thumbnail item-left>
<img src="assets/image/{{data.imageName}}">
</ion-thumbnail>
{{data.Comp}}<br>
{{data.Demand}}<br>
<p> {{data.Desig}}<br></p>
{{data.Place}}<br>
{{data.when}}<br>
</ion-item>
</ion-list>
</ion-refresher>
我不了解以下几点:
- 作为数据集是Asyn,无法在控制台中查看它吗?
- 当我运行此代码时,以下错误显示为运行时错误:
Cannot read property 'complete' of undefined
。 - 当我导航到显示内容的页面时,它不会显示已经存在的内容以及复习继续开始。
注意:请让我知道是否需要更多输入和屏幕截图。
由于数据集为Asyn,无法在控制台中查看它?
您正在使用async
管道。您可以通过尝试在ngOnChanges()
LifeCycleHook中进行记录。
当我运行此代码时,以下错误显示为运行时错误:无法读取未定义的"完整"属性。
您在HTML调用中犯了一个小错误。您需要将$event
传递给您的doRefresh()
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content>
pullingIcon="arrow-dropdown"
</ion-refresher-content>
</ion-refresher>
当我导航到显示内容的页面时,它没有显示已经存在的内容,以及刷新的开始。
您需要使用离子反馈API以及数据加载。我建议您在组件中订阅此而不是async
。
datas:any[];
loadData(refresher?:any){
this.af.database.list('/datas').subscribe(newData=>{ //this is the asynchronous function you call which is setting your data..
this.datas=newData;
},err=>console.log(err),
()=>if(refresher)refresher.complete());//call complete on subscribe complete
}
doRefresh(datas){
this.loadData(datas);
}
您的ion-list
也应在ion-refresher
HTML块之外。您可以从构造函数调用this.loadData();
。