更改重复的$ scope数组,但它影响原始ng-repeat

时间:2016-10-19 19:10:55

标签: javascript angularjs

我有一个循环通过$scope.myarray的ng-repeat。

我有以下功能:

var copy = $scope.myarray;

$.each(copy, function(index, data){
    data.name = "";
});

当我执行此操作时,它似乎影响ng-repeat上的$scope.myarray循环。

当我这样做时:

console.log(copy);
console.log($scope.myarray);

他们似乎都有$$hashKey所以我认为这就是搞砸了。

在不影响第一个版本的情况下操作数组副本的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

复制你应该使用

var copy = angular.copy($scope.myarray);

答案 1 :(得分:0)

通过这样做:

var copy = $scope.myarray;

您没有创建$ scope.myarray的副本,但您只是将$ scope.myarray的引用分配给新变量。

这样做:

$.each(copy, function(index, data){
    data.name = "";
});

完全相同
$.each($scope.myarray, function(index, data){
    data.name = "";
});

您需要将$ scope.myarray的所有项目复制到新数组(see this answer

根据$ scope.myarray中的数据类型,您可能需要进行深层复制/克隆