我有一个连接到节点/快速服务器的角度控制器。请求的响应数据在$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函数?
答案 0 :(得分:1)
angular具有此$.when
angular.copy()
还可以用于清除角度可以创建的不需要的属性,例如$scope.x = response;
$scope.y = angular.copy(response);
跟踪中使用的hashkeys
答案 1 :(得分:1)
简短的回答是
$scope.y = angular.copy($scope.x)
或
$scope.y =_.clone($scope.x)
如果您使用lodash / underscore。
遗憾的是,较长的答案会更长,并且需要您了解byReference和byValue变量类型之间的区别。 要了解它,请参阅this answer。