在这种情况下如何防止绑定:
$scope.data = [{i:0, a:0}, {i:0, a:0}, {i:0, a:0}];
$scope.twoofthedata = [$scope.data, $scope.data];
所以$ scope.twoofthedata [0]独立于$ scope.twoofthedata [1]
答案 0 :(得分:3)
在JavaScript中,操纵对象by reference。这不是Angular绑定问题。
然而,Angular允许您通过angular.copy方法绕过此语言约束,该方法会创建给定对象的深层副本。
$scope.data = [{i:0, a:0}, {i:0, a:0}, {i:0, a:0}];
// Manually call `angular.copy` on each member
$scope.twoofthedata = [
angular.copy($scope.data),
angular.copy($scope.data)
];
// Cleaner version (using `Array.prototype.map`)
$scope.twoofthedata = [$scope.data, $scope.data].map(angular.copy);
但是应该警告你,深拷贝可能非常昂贵,因此只有在真正需要时才能使用。
仅供参考:如果您遇到类似问题但未使用Angular,则可以使用Lodash,它也有deep clone method。