复制角度响应数据,以便更改为一个不会影响另一个

时间:2015-07-16 21:06:44

标签: javascript angularjs node.js express

我有一个连接到节点/快速服务器的角度控制器。请求的响应数据在$http.get中调用,我可以在其中设置response=$scope.x。然后x可以与之互动并进行更改。然后,我可以设置$scope.y = $scope.x,对y的任何更改都会导致x更改。但是,我基本上想要克隆响应,以便将原始响应数据设置为不同的变量,而不会相互改变。

考虑response.name = "Joe"的回复。

$scope.x = response;
$scope.y = response;

在我的代码或视图/模型中,我可以更改x.name

$scope.x.name = "Bob"

但是,我希望$scope.y.name仍然等于"Joe"

我可以使用两个单独的get请求来检索相同的响应,但是我想将响应传递给一个函数,该函数将根据{{1}动态更改该数据并生成新版本的数据}循环。有干净的,有角度的"去做这个?还是一个简单的javascript函数?

2 个答案:

答案 0 :(得分:1)

angular具有此$.when

的内置实用程序
angular.copy()

还可以用于清除角度可以创建的不需要的属性,例如$scope.x = response; $scope.y = angular.copy(response); 跟踪中使用的hashkeys

angular.copy() docs

答案 1 :(得分:1)

简短的回答是

$scope.y = angular.copy($scope.x)

$scope.y =_.clone($scope.x)

如果您使用lodash / underscore。

遗憾的是,较长的答案会更长,并且需要您了解byReference和byValue变量类型之间的区别。 要了解它,请参阅this answer