当我的ASYN操作完成后,如何使用完整()



我的代码:

.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>

我不了解以下几点:

  1. 作为数据集是Asyn,无法在控制台中查看它吗?
  2. 当我运行此代码时,以下错误显示为运行时错误:Cannot read property 'complete' of undefined
  3. 当我导航到显示内容的页面时,它不会显示已经存在的内容以及复习继续开始。

注意:请让我知道是否需要更多输入和屏幕截图。

由于数据集为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();

相关内容

  • 没有找到相关文章

最新更新