Javascript Angularjs+;停止将数据更新为变量
我和angularjs一起工作。我有一些不同的问题 我有HTTP呼叫。HTTP请求之后,响应将存储在两个不同的变量中。在我更改变量中的数据后,意味着它也将自动更改为其他变量Javascript Angularjs+;停止将数据更新为变量,javascript,angularjs,json,Javascript,Angularjs,Json,我和angularjs一起工作。我有一些不同的问题 我有HTTP呼叫。HTTP请求之后,响应将存储在两个不同的变量中。在我更改变量中的数据后,意味着它也将自动更改为其他变量 $http.get('get/list') .success(function(data, status) { $scope.test1 = data; $scope.test2 = data; }) .error(function(
$http.get('get/list')
.success(function(data, status) {
$scope.test1 = data;
$scope.test2 = data;
})
.error(function(data) {
});
//示例json
{
"lists": [
{
"_id": "575e6d4bde006e3176bb9dc5",
"items": [
{
"name": "a"
}, {
"name": "b"
}
],
"name": "fridge",
"status": "done"
}
]
}
之后,我将json推入test1变量
$scope.addRow = function(comment1) {
$scope.test1.lists.push({
'name' : 'c'
});
};
但是当我打印$scope.test2时,它也会自动添加新的添加项。(name=c)
有没有解决这个问题的办法。我需要打印test2在HTTP请求中得到的内容。这是因为
$scope.test1
和$scope.test2
都引用了内存中的相同对象。使用angular.copy
创建对象的深度副本。因此,$scope.test1
&$scope.test2
将不再是彼此的别名
$http.get('get/list')
.success(function(data, status) {
$scope.test1 = angular.copy(data);
$scope.test2 = angular.copy(data);
})
.error(function(data) {
});
这是因为
$scope.test1
和$scope.test2
都引用了内存中的相同对象。使用angular.copy
创建对象的深度副本。因此,$scope.test1
&$scope.test2
将不再是彼此的别名
$http.get('get/list')
.success(function(data, status) {
$scope.test1 = angular.copy(data);
$scope.test2 = angular.copy(data);
})
.error(function(data) {
});
它与浅拷贝/深拷贝的关系相同 在
$scope.data1
和$scope.data2
中存储值时,必须进行深度复制
用这样的东西
$scope.test1 = angular.copy(data);
$scope.test2 = angular.copy(data);
它将创建一个深度副本,并在
$scope中更改。data1
不会影响$scope。data2
它与浅层副本/深度副本的关系相同
在$scope.data1
和$scope.data2
中存储值时,必须进行深度复制
用这样的东西
$scope.test1 = angular.copy(data);
$scope.test2 = angular.copy(data);
它将创建一个深度副本,并在
$scope中更改。data1
不会影响$scope。data2
在HTML端,您还可以通过将两个“:”作为变量的前缀来剪切视图和控制器之间的数据绑定。像这样:
<div>{{::test2}}</div>
{{::test2}
您的变量不会再次更新,但更改不会显示在网页中。在HTML端,您还可以通过将两个“:”作为变量前缀来剪切视图和控制器之间的数据绑定。像这样:
<div>{{::test2}}</div>
{{::test2}
您的变量不会再次更新,但更改不会显示在网页中