Как добавить объект в массив? В 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
Ошибка возникает потому, что $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)); }
Теперь код должен работать правильно и добавлять объекты в массив.
Ошибка возникает потому, что $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));
}
Теперь код должен работать правильно и добавлять объекты в массив.