@EgorP13

Как корректно занести данные в корзину через localstorage(json)?

Здравствуйте, делаю корзину на сайте через плагин jQcart, столкнулся с проблемой добавления товара через localstorage и json с модального окна.Суть алгоритма добавления такая, есть карточки товаров на странице, при нажатии на кнопку, появляется модальное окно в которое переносятся дата атрибуты из карточки товара, после нажатия на кнопку в модальном окне и выбора доп.параметров, товар попадает в корзину.С первым товаром занесение работает корректно.При занесении другой карточки товара данные добавляются к предыдущему товару, а не указываются в корзине, как уникальный товар. При проверке через google dev tools, как я понимаю объект не обновляется, хотя атрибуты в кнопке изменились и идёт просто сложение с предыдущим товаром.И если же производить добавления товара без модального окна, **а просто по клику на карточку товара всё работает отлично**(((.**Подскажите пожалуйста в чём проблема, уже неделю ломаю голову над этим вопросом**.Вот кусочек кода переноса атрибутов из кнопки в кнопку модального окна:

var itemDataButton,  totalValueOrder, 
    itemDataPopUp = $('.delivery-type__addorder_btn'); 
    $('.add-to-cart').click(function (event) { 
    event.preventDefault(); 
    totalValue = $('#total_value').text($(this).data('price')); 
    totalValueOrder = ($(this).data('price')); 
    itemDataButton = $(this).data(); 
    for ( var key in itemDataButton) { 
    itemDataPopUp.attr('data-' + key, itemDataButton[key]); } });


Добавление в корзину

addToCart: function(e) {
          e.preventDefault();
          itemData = $(this).data();
    			if(typeof itemData.id === 'undefined') {
    				console.log('Отсутствует ID товара');
    				return false;
    			}
          cartData = actions.getStorage() || {};
          if (cartData.hasOwnProperty(itemData.id)) {
            cartData[itemData.id].count++;
          } else {
            itemData.count = 1;
            cartData[itemData.id] = itemData;
          }
          actions.setStorage(cartData);
          actions.changeTotalCnt(1);
          label.show();
    			if(opts.openByAdding) {
    				actions.openCart();
    			}
          return false;
        },

LocalStorage


setStorage: function(o) {
          localStorage.setItem('jqcart', JSON.stringify(o));
          return false;
        },
        getStorage: function() {
          return JSON.parse(localStorage.getItem('jqcart'));
        }
  • Вопрос задан
  • 302 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы