【问题标题】:FirebaseListObservable and ion-slides not workingFirebaseListObservable 和 ion-slides 不起作用
【发布时间】:2017-05-02 20:00:15
【问题描述】:

我有一个 FirebaseListObservable 并希望遍历生成的元素以创建离子幻灯片:

<ion-slides [initialSlide]="currentDay - 1">
  <ion-slide *ngFor="let secret of secrets | async let i = index;">
    <big-secret-card [secret]="secret"></big-secret-card>
  </ion-slide>
</ion-slides>

但是,当我这样做时,initialSlide 不起作用。我认为这可能是ion-slides 的错误。

处理此问题的最佳方法是什么?跳过漂亮的异步管道并订阅FirebaseListObservable,并将*ngIf="secrets.length&gt;0" 包含到ion-slides

在这种情况下,我必须在离开页面时使用unsibscribe()吗?

或者有没有更好的解决方案?

【问题讨论】:

  • currentDay 的值是什么?
  • 这是 1-7 的某个值,我们总是有 7 张幻灯片(索引从 0-6 这就是为什么 -1)。此外,当我“硬编码”例如 [initialSlide]=3 时,它总是会以幻灯片 0 跳转打开。
  • 看起来异步操作和视图不同步..您尝试过 if 条件吗?
  • @suraj 作为一种解决方法,我现在将 FirebaseListObservable 转换为常规 Observable 并预加载 7 个空对象的数组

标签: firebase ionic2 angularfire2 ion-slides


【解决方案1】:

我现在正在使用这种解决方法,将 FirebaseListObservable 转换为常规的 Observable 并预加载 7 个空对象的数组。它适用于我的情况:

  getWeek(week): Observable<any> {
    // get all secrets of one week into an array
    let emptyWeek = [{},{},{},{},{},{},{}];
    return Observable.create(observer => {
      observer.next(emptyWeek);
      let week$ = this.af.database.list('/dhsweek/en/week)).subscribe(result => observer.next(result));
      return () => {
        // unsubscribe function called automatically by async pipe when leaving page
        week$.unsubscribe();
      }
    })
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多