У меня есть объект $ rootScope в AngularJS следующим образом:
$rootScope.stuff = {
someId: {
name: "Patrick",
age: 105
},
anotherId: {
name: "Joseph",
age: 94
}
};
У меня есть функция, которая добавляет объекты в $ rootScope.stuff, и она отлично работает:
$rootScope.addSomeStuff = function(id, data) {
$rootScope.stuff[id] = data;
};
Однако у меня также есть функция, которая пытается удалить (на основе https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete), и она не работает:
$rootScope.deleteStuff = function(id) {
delete $rootScope.stuff[id];
};
Когда я проверяю $rootScope.stuff[id]
я получаю правильный объект, который хочу удалить. Я также попробовал сращивание, но это вызывает ошибку, как я думал. Какие-либо предложения? Благодарю.
Измените объект на массив объектов, затем перейдите в индекс объекта, который вы хотите удалить:
$rootScope.stuff = [
someId: {
name: "Patrick",
age: 105
},
anotherId: {
name: "Joseph",
age: 94
}
];
$rootScope.deleteStuff = function(index) {
delete $rootScope.stuff[index];
};
HTML (при условии, что это отображается через ng-repeat):
<button ng-click="deleteStuff($index)"></button>
РЕДАКТИРОВАТЬ
Если вам нужно сохранить данные как объект, работать будет сложная структура данных, поскольку идентификатор каждого объекта на самом деле не является идентификатором, а объектом с именем и возрастом. Таким образом, я действительно не знаю, удастся ли удалить весь объект. Вы можете удалить имя и возраст, но без уникального идентификатора для всего объекта, я не знаю, как вы могли бы удалить сам объект.
angular.isArray($rootScope.stuff);
Я получаю ложь. И я также получаюTypeError: $rootScope.stuff.splice is not a function
когда я пытаюсь использовать соединение.