gpt4 book ai didi

javascript - Angular js-当我在一个范围变量中进行更改时,它也会更改其他范围变量

转载 作者:行者123 更新时间:2023-11-30 12:03:11 25 4
gpt4 key购买 nike

根据标题,我已经在 fiddle 上上传了我的代码,这里是链接访问
https://jsfiddle.net/owze1rcj/当我更改 myAppObjects 变量时。变化也反射(reflect)在其他变量上。这是我的代码
(HTML 部分)

<div ng-controller="MyCtrl">
<table>
<tr ng-repeat="appObj in myAppObjects">
<td>{{appObj.id}}
<input type="checkbox" ng-model="appObj.cb1"></td>
<td><input type="checkbox" ng-model="appObj.cb2"></td>
<td><input type="checkbox" ng-model="appObj.cb3"></td>
<td><input type="checkbox" ng-model="appObj.cb4"></td>
<td><input type="checkbox" ng-model="appObj.cb5"></td>
</tr>
</table>
<pre>
first {{myAppObjects | json}}
second {{AppObjects | json}}
</pre>

</div>

( Controller 部分)

function MyCtrl($scope) {
var a =[
{
id: 1,
cb1: true,
cb2: false,
cb3: true,
cb4: true,
cb5: false
}];

$scope.myAppObjects = a;
$scope.AppObjects = a;


}

最佳答案

首先理解深拷贝和浅拷贝的概念

浅拷贝

Shallow copy has the top level object and points to the same object.

因此,当您直接将一个作用域变量复制到另一个时,它会创建一个浅拷贝

  $scope.firstVar = $scope.secondVar;

这里,firstVarsecondVar 在上面的例子中相互连接。

深拷贝

Deep copy has all of the objects of the copied object at all levels and points to the different object.

angular.copy 创建源的深拷贝,它应该是一个对象或数组。

$scope.firstVar = angular.copy($scope.secondVar);

这里,firstVarsecondVar 是两个不同的变量。

关于javascript - Angular js-当我在一个范围变量中进行更改时,它也会更改其他范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com