【问题标题】:AngularFire2 and Ionic2, calculating list sumAngularFire2 和 Ionic2,计算列表总和
【发布时间】:2017-09-25 21:10:55
【问题描述】:

请帮助我弄清楚如何使用 ionic 中的 AngularFire2 计算来自 firebase 的对象值的总和。

我正在尝试这样做:

在我想要调用函数的 HTML 文件中:

    <ion-col col-1>
      {{(calculateAverage(student.$key) | async)}}
    </ion-col>

在 .ts 文件中,我想做这样的事情,获取对象列表,对其进行迭代并对子项的值求和并将该值返回给 html。

我知道如何使用 this.af.database.list 获取列表并使用 *ngFor 在 HTML 中显示值,但不知道如何在 .ts 文件中迭代并将值返回给 HTML,因为这是异步的。

firebase 数据示例:

"-KhdUCJAyr7Y4Zz3QOnl" : { "-KigSgGlWyFQao80DuA0" : { "value" : "30" }, "-KigTDI3Nue88If0fdYl" : { "value" : "70" } }

谁能帮帮我?

提前致谢。

【问题讨论】:

    标签: list loops ionic2 angularfire2


    【解决方案1】:

    您可以在subscribethis.af.database.list 中进行计算。

    // suppose you keep the observable
    this.items = this.af.database.list('/sample');
    
    // do calculate in observable.subscribe
    this.items.subscribe(data => {
      data.forEach(item => {
        // sum here
        calculateSum(item.value);
      });
      // calculate average here
      calculateAverage();
    });
    

    如何计算并在模板中显示的示例:

    sumValue = 0;
    averageValue = 0;
    // sum values
    calculateSum(value) {
      this.sumValue = this.sumValue + parseInt(value);
    }
    calculateAverage(count) {
      this.averageValue = this.sumValue / count;
    }
    

    在模板中显示计算结果:

    <span>averageValue</span>
    

    【讨论】:

    • 感谢您的回复,但是我如何在异步函数中返回?
    • @JorgeVieira 你不能从异步函数返回,但你可以用它的回调做你想做的事。
    • 对不起,因为我是 ionic/angular 的新手。请举例说明如何在 html 中使用 sum 的结果?
    • @JorgeVieira 我给出了更新答案以包含一个示例。
    • 哦,谢谢@Pengyy。我会在这里尝试,看看是否有效。
    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    相关资源
    最近更新 更多