嗨,大家好我是新来的角,所以请轻松。我注意到,当我尝试从传递给函数的数组中删除一个对象时,它会从该函数中的数组中删除该对象,但不是在原始数组中。这让我感到困惑,因为我认为他们是按引用传递:从数组删除对象传递为参数不修改原始数组(角)
function controller($scope, $http) {
var vm = this;
vm.breakfast = [ { id:1, 'name':'fruit' }, { id:2, 'name':'egg' } ];
function removeFromMeal(meal, entryId) {
meal = meal.filter (function (entry) {
return entry['id'] !== entryId;
}
}
function manageEntry(entry) {
...
// Condition to remove meal from vm.breakfast
if (...) { removeFromMeal(vm.breakfast, entry['id']); }
}
}
的问题是,如果我通过为1的ID的进入manageEntry
和内removeFromMeal
设置断点,我可以看到,“饭”阵列被成功过滤(即ID为1的对象从vm.breakfast中删除)。但是,只要函数返回,函数(vm.breakfast)就像函数从未运行一样。我确定这个问题与上下文/作用域有关,使用$ apply会在某处出现吗?
在此先感谢。
要从你需要使用'delete'或'方法Array.splice()'一个数组中删除的东西。我没有看到这样的事情。 'array.filter'返回一个新的数组,它不修改给定的数组。 – Barmar