我正在尝试用新元素(数据)替换列表中的元素。该列表在我的范围内为$ scope.list。
所以我要做类似的事情:
angular.foreach($scope.list, function(element) {
if(element.id === data.id) {
element = data;
console.log(element);
return false;
});
console.log($scope.list);
在控制台元素中已更新,但$ scope.list保持不变。
首先,我尝试使用Array.find()而不是像这样循环列表:
$scope.list.filter(x => x.id === data.id)[0] = data;
但是我在控制台中遇到了一个错误:分配的左侧无效。
您知道为什么它不会更改$ scope.list吗?我在AngularJS和JavaScript上还很陌生。
先谢谢您
答案 0 :(得分:2)
尝试
$scope.list = $scope.list.map(element => element.id === data.id ? data : element);
地图函数基本上是带有返回值的forEach-map
没有箭头功能,如果没有,则正确
$scope.list = $scope.list.map(function(element){
if (element.id === data.id){
return data;
}
return element;
});
答案 1 :(得分:0)
使用暴露给迭代器函数的key
和obj
值:
angular.forEach($scope.list, function(element,key,obj) {
if(element.id === data.id) {
obj[key] = data;
console.log(obj);
return false;
});