Angular副本无法复制数组

时间:2017-08-09 16:59:22

标签: angularjs

似乎angular.copy()没有正确处理我正在使用它的其中一个项目。这是示例代码和后面的屏幕截图。

    console.log("Copy");
    $scope.traffic_data = traffic_data;
    $scope.total_data = total_data;
    console.log($scope.traffic_data);
    console.log($scope.total_data);

    console.log("Original");
    $rootScope.original_traffic_data = angular.copy($scope.traffic_data);
    $rootScope.original_total_data = angular.copy($scope.total_data);
    console.log($rootScope.original_traffic_data);
    console.log($rootScope.original_total_data);

    console.log("Variable data");
    console.log(total_data);
    console.log("=============");

enter image description here

我面临的问题是

$rootscope.original_total_data

没有复制

的内容
$scope.total_data

如截图所示。我已经突出显示了不同的控制台日志,以区分它们。

该行

console.log($rootScope.original_total_data);

显示没有内容,即使我在该变量上使用了angular.copy。 我在这里错过了什么?请帮忙。谢谢。 此外,$ rootScope已在控制器中声明,它正在为

工作
$rootScope.original_traffic_data

那为什么不适合

$rootScope.original_total_data?

感谢。

1 个答案:

答案 0 :(得分:2)

export PATH="/home/my_pc/anaconda3/bin:$PATH" 是一个数组,而total_data是一个对象。

traffic_data区分数组和对象。对于对象,它将复制所有键(属性)。对于数组,它只会复制数组元素,而不会复制附加到它的任何自定义属性 - see source code

如果要在angular.copy()上设置属性,则应将其设置为对象。它似乎没有任何索引值,所以这不应该是一个问题,它可能首先应该是一个对象。