Как добавить объект в массив? В 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
231 +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 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир