首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以角度显示数据?

如何以角度显示数据?
EN

Stack Overflow用户
提问于 2019-01-30 18:36:10
回答 2查看 1.6K关注 0票数 0

我在Ionic 4中有一个香烟计数器应用程序。当用户单击“计数器”段中的“Add One”按钮时,计数器数据被推到存储区。我需要从存储中检索数据,并将其显示在“历史”段中的一个表中。我无法使用以下代码显示数据:

代码语言:javascript
复制
this.service.getConsumptions().then((data: consumption[]) => {
            this.histories = data;
            console.log(data);
          })

home.page.html:

代码语言:javascript
复制
   <ion-header>
      <ion-toolbar>
        <ion-segment [(ngModel)]="segment" color="dark">
          <ion-segment-button value="counter">
            Counter
          </ion-segment-button>
          <ion-segment-button value="history">
            History
          </ion-segment-button>
        </ion-segment>
      </ion-toolbar>
    </ion-header>

    <ion-content padding>

      <div *ngIf="segment == 'counter'">
        <h1 class="keski">Consumption today</h1>
        <p class="keski">{{ today.date }}</p>
        <p class="keski">{{ today.consumption }}</p>
        <p class="keski">{{ today.last_smoked }}</p>
        <ion-button expand="block" color="dark" (click)="addOne()">Add one</ion-button>
      </div>

      <div *ngIf="segment == 'history'">
        <h1 class="keski">Recent consumption</h1>
        <ion-grid>
          <ion-row>
            <ion-col><b>Date</b></ion-col>
            <ion-col><b>Consumption</b></ion-col>
          </ion-row>
          <ion-row *ngFor="let history of histories">
            <ion-col>{{ history.date }}</ion-col>
            <ion-col>{{ history.consumption }}</ion-col>
          </ion-row>
        </ion-grid>
      </div>

    </ion-content>

consumption.interface.ts:

代码语言:javascript
复制
export interface consumption {
    date: string,
    consumption: number,
    last_smoked: string
}

home.page.ts:

代码语言:javascript
复制
    import { Component } from '@angular/core';
    import { consumption } from '../consumption.interface';
    import { KulutusService } from '../kulutus.service';

    @Component({
      selector: 'app-home',
      templateUrl: 'home.page.html',
      styleUrls: ['home.page.scss'],
    })

    export class HomePage {

      constructor(private service: KulutusService) { }

      segment: any = "counter";
      today = {} as consumption;
      histories: consumption[] = [];

      ngOnInit() {

        this.service.getConsumptions().then((data: consumption[]) => {
          if (data == null) {
            this.today.consumption = 0;
            this.today.date = new Date().toLocaleDateString();
            this.today.last_smoked = new Date().toLocaleTimeString();
          } else {
            for (let consumption of data) {
              if (consumption.date == new Date().toLocaleDateString()) {
                this.today = consumption;
              }
            }
          }

          this.service.getConsumptions().then((data: consumption[]) => {
            this.histories = data;
            console.log(data);
          })
        })

      }

      addOne = () => {
        this.today.date = new Date().toLocaleDateString();
        this.today.consumption += 1;
        this.today.last_smoked = new Date().toLocaleTimeString();

        this.service.getConsumptions().then((data: consumption[]) => {
          let consumptions = data;
          // there is at least one consumption
          if (consumptions != null) {
            let current_exists = false;
            for (let consumption of consumptions) {
              // use current date
              if (consumption.date == this.today.date) {
                current_exists = true;
                consumption.date = this.today.date;
                consumption.consumption = this.today.consumption;
                consumption.last_smoked = this.today.last_smoked;

                // add current consumption to history
                for (let history of this.histories) {
                  if (history.date == this.today.date) {
                    history.date = this.today.date;
                    history.consumption = this.today.consumption;
                    history.last_smoked = this.today.last_smoked;
                  }
                }

              }
            }
            // new date
            if (current_exists == false) {
              consumptions.push(this.today);
              this.histories.push(this.today);
            }
            this.service.saveConsumption(consumptions);
          } else {
            // no consumptions at all
            this.service.addConsumption(this.today);
            this.histories = data;
          }
        })
      }

    }

consumption.service.ts:

代码语言:javascript
复制
    import { Injectable } from '@angular/core';
    import { Storage } from '@ionic/storage';
    import { consumption } from '../app/consumption.interface';

    @Injectable({
      providedIn: 'root'
    })

    export class KulutusService {

      constructor(private storage: Storage) { }

      getConsumptions = () => {
        return new Promise((resolve, reject) => {
          this.storage.get("consumption").then((consumptions) => {
            resolve(consumptions);
          })
        })
      }

      addConsumption = (newConsumption: consumption) => {
        this.storage.get("kulutus").then((data: consumption[]) => {
          let kulutukset = data;
          let loytyy_nykyinen = false;
          if (kulutukset == null) {
            kulutukset = [{date: new Date().toLocaleDateString(), 
              consumption: 0, last_smoked: new Date().toLocaleTimeString()},
            ]
          }
          for (let kulutus of kulutukset) {
            // use current date
            if (kulutus.date == newConsumption.date) {
              loytyy_nykyinen = true;
              kulutus.date = newConsumption.date;
              kulutus.consumption = newConsumption.consumption;
              kulutus.last_smoked = newConsumption.last_smoked;
            }
          }
          // new date
          if (loytyy_nykyinen == false) {
            kulutukset.push(newConsumption);
          }
          this.storage.set("kulutus", kulutukset);
        }
        )}

        saveConsumption = (kulutukset: consumption[]) => {
          this.storage.set("kulutus", kulutukset);
        }

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-31 05:20:37

我已经在本地验证了你的代码。只有缺失的部分是

代码语言:javascript
复制
this.segment = "history";

addOne()函数中。

休息很好。请看下面的证据。

票数 0
EN

Stack Overflow用户

发布于 2019-01-30 19:48:23

这里的问题是,在提供的代码中,您没有在this.segment = “history”;上设置addOne单击函数

被遗忘了还是你在别的地方做的?

请查收。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54447342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档