Невозможно прочитать свойство 'цена' из неопределенного - PullRequest
0 голосов
/ 30 августа 2018

Это моя функция добавления к карточке

  
  addToCart(product){
    this.storage.get("cart").then((data) =>{
      if (data == null || data.length == 0){
        data = [];
        data.push({
          "product": product,
          "qty": 1,
          "amount": parseFloat(product.price)
        });
      } else {
        let added = 0;
        for (let i = 0; i < data.length; i++)
        {
          if( product.id == data[i].product.id )
          {
            console.log("Product is already in the cart");
            let qty = data[i].qty;
            data[i] = qty+1;
            data[i].amount = parseFloat(data[i].amount) + parseFloat(data[i].product.price);
            added = 1 ;
          }
        }
        if (added == 0 ){
          data.push({
            "product": product,
            "qty": 1,
            "amount": parseFloat(product.price)
          });
        }
      }
      this.storage.set("cart", data).then( ()=>{
        console.log("updated");
        console.log(data);

        this.toastCtrl.create({
          message: "Cart Updated",
          duration: 3000
        }).present();
      })
    });
  }
 

и когда я нажимаю кнопку «Добавить на карту», ​​продукт был успешно добавлен. Но когда я нажимаю еще раз, это показывает мне, что продукт уже добавлен, но с ошибкой «Невозможно прочитать свойство« цена »неопределенного». это изображение enter image description here

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Проблема в том, что вы присваиваете данные [i] целому числу здесь:

data[i] = qty+1; 

должно быть:

data[i].qty = qty+1;
0 голосов
/ 30 августа 2018

Ваша проблема здесь:

data[i] = qty+1;

Вероятно, должно быть:

data[i].qty = qty + 1;

const data = [{
  qty: 1,
  amount: 50,
  product: {
    price: 20,
  },
}];

const i = 0;

let qty = data[i].qty;

console.log('before', data[i]);

console.log('before access', data[i].product.price);

// Problem is here
data[i] = qty + 1;

console.log('after', data[i]);

console.log('after access', data[i].product.price);

data[i].amount = parseFloat(data[i].amount) + parseFloat(data[i].product.price);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...