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);