Всего обновлений корзины для локального хранилища - PullRequest
0 голосов
/ 10 июня 2019

Я хочу сохранить только промежуточную сумму корзины в моем локальном хранилище. Я использую GTM для вызова события добавления в корзину и получения цены, которая была добавлена ​​в корзину. Оттуда я хочу просто обновить эту цену или создать стоимость корзины, которая обновляется каждый раз, когда добавляется другой товар. Как только я понял функцию добавления, я могу легко заполнить пробелы, когда что-то удалено или кол-во обновлено.

// this is the GTM call to track what the price is when the add to cart button is pushed
var pr = {{DL - Add To Cart}};

// Store product price in localStorage
localStorage.setItem('price', pr.price);

С вышеизложенным у меня нет проблем. Я получаю цену, которая отображается при каждом добавлении товара. Ниже приведен код, с которым я работаю, чтобы обновить цену при добавлении каждой дополнительной цены. Основная проблема, которую я пытаюсь обойти, состоит в том, что я слишком усложнил отображение корзины в {[]}, и вместо этого я хочу, чтобы она отображалась так же, как приведенный выше код ('цена', pr.price) показывает столь простое число .

var addItem = function (price) {
    var oldItems = JSON.parse(localStorage.getItem('cartvalue')) || [] ;
    var match = oldItems.find(function (item) {
        return item['price'] = price;
    });
    if (match) {
        match['price'] += price;
    } else {
        var newItem = {
            'price': price,
        };
        oldItems.push(newItem);
    }
    localStorage.setItem('cartvalue', JSON.stringify(oldItems));
};

 addItem(pr.price);

1 Ответ

0 голосов
/ 12 июня 2019

Вот то, что я наконец смог заставить работать.Теперь это показывает только значение корзины в числовом значении вместо {["price": xx.xx]}

<script>
 var pr = {{DL - Add To Cart}};

localStorage.setItem('price', pr.price);
localStorage.setItem('qty', pr.quantity); 

var addItem = function (price, qty) {
    var currentTotal = localStorage.getItem('cartvalue');
    if(currentTotal)
        currentTotal = parseFloat(currentTotal) + (parseFloat(price) * parseFloat(qty));
    else
        currentTotal = parseFloat(price) * parseFloat(qty);
    localStorage.setItem('cartvalue', currentTotal);
};

 addItem(pr.price, pr.quantity);

</script>
...