当前位置: 代码迷 >> JavaScript >> 复制Angular响应数据,因此对一个的更改不会影响另一个
  详细解决方案

复制Angular响应数据,因此对一个的更改不会影响另一个

热度:17   发布时间:2023-06-12 14:04:10.0

我有一个连接到节点/快速服务器的角度控制器。 请求的响应数据在$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请求来检索相同的响应,但是我想将响应传递到一个函数中,该函数将动态更改该数据并基于for循环创建一个新版本。 是否有一个干净的“角度”来做到这一点? 还是简单的javascript函数?

angular具有一个用于此angular.copy()的内置实用程序

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

也可以用于清除angular可能创建的不需要的属性,例如ng-repeat跟踪中使用的hashkey

简短的答案是

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

要么

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

如果您使用lodash /下划线。


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

  相关解决方案