在离子3中更改数据时,如何自动更新变量的值?

时间:2017-11-14 07:11:39

标签: angular ionic3

我正在尝试获得已存储在数组中的订单的总价。代码看起来像这样。

import { Component } from '@angular/core';
import { Config } from '../config';
var ordersArray = [

];
@Component({
  selector: 'orders-page',
  templateUrl : 'orders.html'
})

export class Orders{
  public orders = ordersArray;
  public config = new Config;
  public addOrder(item){
    ordersArray.push(item);
  }
  public clearOrders(){
    var length = this.orders.length;
    for(let i = 0; i < length; i++){
      ordersArray.pop();
    }
  }
  public total = this.getPrice();
  public getPrice(){
    let price = 0;
    for(let order of ordersArray){
      price = (parseInt(order.item.price) * parseInt(order.quantity) ) + price;
    }
    return price;
  }
  public clearOrder(order){
    for(let i = 0;i < this.orders.length;i++){
      if(order.title == this.orders[i].title){
        ordersArray.splice(i,1);
      }
    }
  }
}

模板,我有{{total}}。 现在,当我从ordersArray中删除元素时,我希望{{total}}自动更新。我该怎么做?

2 个答案:

答案 0 :(得分:1)

每次getPrice()时,您都需要包含price功能。 例如,当您添加新订单时,当您删除一个订单时,当您删除所有订单时...

我认为你可以改进一些代码:

  public clearOrders(){
    ordersArray = ordersArray[];
  }

我无法理解为什么你写public orders = ordersArray;但之后你正在使用ordersArray

请注意,因为您在ordersArray函数中混合了ordersordersArray(),我认为您应该只使用一个。{/ p>

问候。

答案 1 :(得分:0)

更新getPrice()后致电ordersArray,在getPrice()

内拨打clearOrder()

试试这个

public clearOrder(order){
    for(let i = 0;i < this.orders.length;i++){
      if(order.title == this.orders[i].title){
        ordersArray.splice(i,1);
      }
    }
    this.total = this.getPrice(); 
  }