Angularfire,Prevent函数在重新加载页面时返回初始值

时间:2018-01-09 05:51:43

标签: angular typescript firebase angularfire2

我的service.ts中有一个函数用于将数据推送到我的firebase。我制作了更多变量来存储数学计算的结果。它们是可变的,用于存储提交者的数量和他们选择的选项。当第一次加载localhost:4200和我提交了1名男性和1名女性时,我每人都有50%。问题是,当我重新加载localhost:4200页面并提交另一个数据时(例如我再增加1个男性),结果/比率再次重置为0(并成为100% male0% female )。我没有删除我的firebase中的数据。

//service.ts
selectedData: App = new App();

dataList: AngularFireList < any > ;
getData() {
  this.dataList = this.firebase.list('data');
  return this.dataList;
}

percentList: AngularFireList < any > ;
getPercent() {
  this.percentList = this.firebase.list('percent');
  return this.percentList;
}

male: number = 0;
female: number = 0;
percentMale: number = 0;
percentFemale: number = 0;
insertData(data: App) {
  this.dataList.push({
    nama: data.nama,
    email: data.email,
    gender: data.gender,
  });

  if (data.gender == 'Male') {
    this.male++;
  } else if (data.gender == 'Female') {
    this.female++;
  }

  this.percentMale = this.male / (this.male + this.female) * 100,
    this.percentFemale = this.female / (this.male + this.female) * 100,

    this.percentList.update("percentKey", {
      male: this.male,
      female: this.female,
      percentMale: this.percentMale,
      percentFemale: this.percentFemale,
      //percentMale: this.percentMale = this.male/(this.male+this.female)*100,
      //percentFemale: this.percentMale = this.male/(this.male+this.female)*100,
    });
  console.log('percentMale', this.percentMale + '%');
  console.log('percentFemale', this.percentFemale + '%');
}

<!-- begin snippet: js hide: false console: true babel: false -->

如果我删除变量上的=0,则会返回错误First argument contains NaN in property

//component.ts
ngOnInit() {
  var x = this.AppService.getData();
  x.snapshotChanges().subscribe(item => {
    this.dataList = [];
    item.forEach(element => {
      var y = element.payload.toJSON();
      y["$key"] = element.key;
      this.dataList.push(y as App);
    });
  });

  var q = this.AppService.getPercent();
  q.snapshotChanges().subscribe(item => {
    this.percentList = [];
    item.forEach(element => {
      var w = element.payload.toJSON();
      w["$key"] = element.key;
      this.percentList.push(w as App);
    });
  });
}

this.AppService.insertData(this.AppService.selectedData);

如果需要更多代码段,请与我们联系。先谢谢你。

0 个答案:

没有答案