Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我编辑所选项目,初始集合将自动更改,并在单击时继续添加_Javascript_Angularjs - Fatal编程技术网

Javascript 我编辑所选项目,初始集合将自动更改,并在单击时继续添加

Javascript 我编辑所选项目,初始集合将自动更改,并在单击时继续添加,javascript,angularjs,Javascript,Angularjs,我单击收藏A中的一个项目并向收藏B收费,问题是:收藏B的值的任何修改也会更改收藏A的项目。 如何解决该细节。 点击次数超过了总数 var-app=angular.module(“RodoApp”,[]); app.controller(“RodoController”,函数($scope,$http){ $scope.data_List=[{Value:100}, {Value:200}, {值:300},]; $scope.List_Add=[]; $scope.click_Add=函数(数

我单击收藏A中的一个项目并向收藏B收费,问题是:收藏B的值的任何修改也会更改收藏A的项目。 如何解决该细节。

点击次数超过了总数

var-app=angular.module(“RodoApp”,[]);
app.controller(“RodoController”,函数($scope,$http){
$scope.data_List=[{Value:100},
{Value:200},
{值:300},];
$scope.List_Add=[];
$scope.click_Add=函数(数据){
if($scope.List_Add.indexOf(data)=-1){
$scope.List_Add.push(数据);
$scope.Sum=()=>$scope.List_Add.reduce((Value,b)=>{return Value+b.Value;},0);//这里是Sum
}
}
$scope.click_Update=函数(数据,新值){
data.Value=newValue;
}
});

{{data.Value}}

总和:{{Sum()}}
当您将
数据
推送到
列表_Add
时,两个数组中的项目都引用同一个对象。因此,您可以使用或在按下
List\u Add

$scope.List_Add.push({ ...data })

更新的代码段:

var-app=angular.module(“RodoApp”,[]);
app.controller(“RodoController”,函数($scope,$http){
$scope.data_List=[{Value:100},{Value:200},{Value:300},];
$scope.List_Add=[];
$scope.click_Add=函数(数据){
if($scope.List_Add.indexOf(data)=-1){
$scope.List_Add.push({…data});
}
}
$scope.click_Update=函数(数据,新值){
data.Value=newValue;
}
});

{{data.Value}}


这是一个常见问题。问题是,当您从a复制到b时,实际上只是从b复制一个引用,而不是值。我不太确定如何解决这个问题,但您应该从克隆
数据中的属性开始,看看问题是否仍然存在。另一个解决方案可能是
JSON.parse(JSON.stringify(data))
然后将结果添加到
b
中,看看是否works@r3wt你觉得下面的答案怎么样?试试看是否有效。这两个示例都是克隆对象,因此理论上它们不应再成为共享参考。在实践中,有时它不起作用,需要额外的步骤。
$scope.List_Add.push(Object.assign({}, data))