复制Angular响应数据,这样对其中一个的更改不会影响另一个
Duplicating Angular response data so changes to one don't affect the other
我有一个连接到node/express服务器的angular控制器。请求的响应数据在$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
跟踪
angular.copy()文档
简短的回答是
$scope.y = angular.copy($scope.x)
或
$scope.y =_.clone($scope.x)
如果你使用lodash/underscore。
不幸的是,较长的答案更长,并且需要您了解byReference和byValue变量类型之间的区别。要理解它,请看这个答案。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 导航到特定事件的另一个变量页面
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何在react js中将值从一个组件发送到另一个组件
- 按我自己的类克隆另一个元素的内容和顺序
- 在另一个函数中使用变量this
- 如何在react js中从一个页面导航到另一个页面
- 在另一个函数成功结束后调用该函数
- 要求定义另一个文件中的对象