Javascript 如何在angularjs中克隆作用域?
我有以下资料:Javascript 如何在angularjs中克隆作用域?,javascript,angularjs,Javascript,Angularjs,我有以下资料: $scope.form= response.data.shooter; oldData= response.data.shooter; 我这里有一个问题: 两者都具有相同的对象数组 当我从oldData中删除任何值时,它也会从$scope.form中删除 代码如下: $.each(oldData, function(i, e) { console.log(oldData[e], $scope.form[e]); oldData[e] = ''; console.lo
$scope.form= response.data.shooter;
oldData= response.data.shooter;
我这里有一个问题:
两者都具有相同的对象数组
当我从oldData
中删除任何值时,它也会从$scope.form
中删除
代码如下:
$.each(oldData, function(i, e) {
console.log(oldData[e], $scope.form[e]);
oldData[e] = '';
console.log(oldData[e], $scope.form[e]);
});
我已经找过了,但是没有运气
有谁能告诉我,无论两个阵列对象(即范围的独立副本)之间是否同步,如何创建范围的副本以单独处理它,以便在该副本中进行更改时不会影响范围内的复制?使用
使用
@Charlietfl是正确的,我只想对这个问题和解决方案做一些解释
使用
=
,您实际上是在将response.data.shooter
的引用分配给$scope.form
和oldData
,因为引用是相同的更新
一个会影响另一个(与C++
中的浅拷贝
的概念相同)。为了避免此类问题,您需要对对象进行深度复制
,而角度复制的方法是Well@Charlietfl是正确的,我只想对问题和解决方案添加一些解释
使用
=
,您实际上是在将response.data.shooter
的引用分配给$scope.form
和oldData
,因为引用是相同的更新
一个会影响另一个(与C++
中的浅拷贝
的概念相同)。为了避免此类问题,您需要对对象进行深度复制
,而在角度复制中进行此操作的方法是是,您可以使用angular.copy
。将对象复制到其他对象
angular.copy(源[目标])强>
oldData=angular.copy($scope.form)代码>
angular.copy($scope.leader,oldData)代码>
两者都可以使用
您还可以查看lodash和下划线
此库提供了非常好的复制方法。是的,您可以使用angular.copy
。将对象复制到其他对象
angular.copy(源[目标])强>
oldData=angular.copy($scope.form)代码>
angular.copy($scope.leader,oldData)代码>
两者都可以使用
您还可以查看lodash和下划线
这个库提供了非常好的方法
$scope.form= response.data.shooter;
oldData= angular.copy(response.data.shooter);