Как добавить объект в массив? В angularJs создал factory, и в ней такие функции:var cart = {
itemsCookie: '',
init: function(itemsCookie) {
this.itemsCookie = itemsCookie;
if (!($cookies.get(this.itemsCookie) instanceof Array)) {
$cookies.put(this.itemsCookie, []);
}
},
addItem: function(item, quantity) {
// Устанавливаем значение по умолчанию для кол-ва
if (quantity === undefined) quantity = 1;
var items = $cookies.get(this.itemsCookie);
items.push({
id: item.id,
quantity: quantity,
price: item.price
});
$cookies.put(this.itemsCookie, items);
}
}
в консоле выдает такую ошибку:
Error: items.push is not a function

21 Авг 2019 в 07:04
267 +1
0
Ответы
1

Ошибка возникает потому, что $cookies.get(this.itemsCookie) возвращает строку, а не массив.

Для исправления этой ошибки, нужно перевести строку из куки в массив путем парсинга JSON. Используйте JSON.parse() перед присвоением значений переменной items:

addItem: function(item, quantity) {
// Устанавливаем значение по умолчанию для кол-ва
if (quantity === undefined) quantity = 1;
var items = JSON.parse($cookies.get(this.itemsCookie) || '[]');
items.push({
id: item.id,
quantity: quantity,
price: item.price
});
$cookies.put(this.itemsCookie, JSON.stringify(items));
}

Теперь код должен работать правильно и добавлять объекты в массив.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир