根据标题,我已将我的代码上传到小提琴这里是链接访问
https://jsfiddle.net/owze1rcj/
当我更改myAppObjects变量时。变化也反映在其他变量中。
这是我的代码
(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>
(控制器部分)
function MyCtrl($scope) {
var a =[
{
id: 1,
cb1: true,
cb2: false,
cb3: true,
cb4: true,
cb5: false
}];
$scope.myAppObjects = a;
$scope.AppObjects = a;
}
答案 0 :(得分:2)
首先了解深拷贝和浅拷贝的概念
浅拷贝
Shallow copy
具有顶级对象并指向同一个对象。
因此,当您直接将一个范围变量复制到其他时,会创建一个浅层副本。
$scope.firstVar = $scope.secondVar;
此处,firstVar
和secondVar
在上面的示例中相互连接。
深层复制
Deep copy
包含所有级别的复制对象的所有对象,并指向不同的对象。
angular.copy
创建源的深层副本,它应该是一个对象或一个数组。
$scope.firstVar = angular.copy($scope.secondVar);
此处,firstVar
和secondVar
都是两个不同的变量。
答案 1 :(得分:1)
function MyCtrl($scope) {
var a =[
{
id: 1,
cb1: true,
cb2: false,
cb3: true,
cb4: true,
cb5: false
}];
$scope.myAppObjects = angular.copy(a);
$scope.AppObjects = angular.copy(a);
}
使用angular.copy()方法分配值,它不会复制变量引用