如何在angularjs中克隆范围?

时间:2017-11-17 14:06:08

标签: javascript angularjs

我的数据如下:

public void FirstRegister() {
    content.FirstRegister(); //<-- content
}

我在这里有问题:

两者都有相同的对象数组。

当我从$scope.form= response.data.shooter; oldData= response.data.shooter; 删除任何值时,它也会从oldData中删除。

代码如下:

$scope.form

我已经搜过这个,但没有运气。

任何人都可以告诉我,如何创建范围的副本来单独处理它,而不管两个数组对象之间的同步,即独立的范围副本,以便如果我在该副本中进行更改不应影响范围?

3 个答案:

答案 0 :(得分:1)

使用angular.copy()

$scope.form= response.data.shooter;
oldData= angular.copy(response.data.shooter);

答案 1 :(得分:1)

是的,您可以使用angular.copy。将对象复制到其他对象。

angular.copy(来源,[目的地]);

oldData = angular.copy($scope.form);

angular.copy($scope.leader, oldData);

你可以使用

https://docs.angularjs.org/api/ng/function/angular.copy

您也可以查看lodash and underscore

这个库提供了很好的方法。

答案 2 :(得分:0)

那么@Charlietfl是正确的我只想对问题和解决方案添加一些解释

使用=,您实际上已将response.data.shooter的引用分配给$scope.formoldData,并且引用是相同的updating会影响其他(与shallowCopy中的C++相同的概念)。为避免出现这类问题,您需要制作deep copies个对象,并且在角度为angular.copy()

的方式