Я должен выполнить массив элементов в angularjs
angular.module('app').controller('AppController', function ($scope, $timeout) {
$scope.items = {
item1: {
name: "Hamburger",
complete: "50%",
start: "2015/09/10 11:00",
finish: "2015/09/11 04:00",
work: "8 hours"
},
item2: {
name: "Pasta",
complete: "50%",
start: "2015/09/10 11:00",
finish: "2015/09/11 04:00",
work: "8 hours"
},
item3: {
name: "Potato",
complete: "80%",
start: "2015/09/10 18:00",
finish: "2015/09/11 04:00",
work: "8 hours"
}
};
$scope.items.push({
item4: {
name: "Ham",
complete: "50%"...
}
});
}
Я хочу добавить к нему новый элемент, но он не работает.
Я попробовал метод.push(item), но он не работает со следующим сообщением в консоли
Object doesn't support property or method 'push'
Какой самый простой способ добавить элемент в этот существующий массив?
Фактически вы используете объект (а не массив)
Добавить значение к объекту: $scope.items[key] = value;
ИЛИ
Инициализировать массив вместо объекта $scope.items = [....];
Ваши данные $ scope.items не являются массивом, а объектом. Вы объявляете его с помощью { }
, а объект не получает метод.push().
Если вы хотите использовать метод Array.prototype.push(), вам нужно обработать массив, так что просто измените:
$scope.items = { ..... };
От
$scope.items = [ ..... ];
Таким образом, вы сможете:
$scope.items.push({item4 : { name: "Ham", complete: "50%"...}});
В соответствии с вашим кодом $scope.items
является объектом, а не массивом. Таким образом, $scope.items.push
ошибку.
Вы можете преобразовать $scope.items
в массив или использовать $scope.items.item4 = { name: "Ham", complete: "50%"...};
для установки значения.
Посмотрите на свой массив структуры данных, который имеет больше смысла, поэтому вы можете использовать методы массива.
angular.module('app').controller('AppController', function ($scope, $timeout) {
$scope.items = [{
name : "Hamburger",
complete : "50%",
start: "2015/09/10 11:00",
finish: "2015/09/11 04:00",
work: "8 hours"
}, ...];
$scope.items.push({ name: "Ham", complete: "50%"...});
});
Как вы уже упоминали в коде, это javascript Object, а не массив. Только Array поддерживает нажатие. Объявите свой массив следующим образом:
$scope.items = [
item1 : {
name : "Hamburger",
complete : "50%",
start: "2015/09/10 11:00",
finish: "2015/09/11 04:00",
work: "8 hours"
},
item2 : {
name : "Pasta",
complete : "50%",
start: "2015/09/10 11:00",
finish: "2015/09/11 04:00",
work: "8 hours"
},
item3 : {
name : "Potato",
complete : "80%",
start: "2015/09/10 18:00",
finish: "2015/09/11 04:00",
work: "8 hours"
}
];
Теперь вы можете нажимать новые элементы, и это не приведет к ошибке.