Javascript 我编辑所选项目,初始集合将自动更改,并在单击时继续添加
我单击收藏A中的一个项目并向收藏B收费,问题是:收藏B的值的任何修改也会更改收藏A的项目。 如何解决该细节。 点击次数超过了总数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=函数(数
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))