2017-08-09 18 views
1

似乎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? 

谢谢合作。

+0

var copy = Object.assign({},original)。在Angular2中不提供复制功能。 – micronyks

+0

@micronyks看起来不像Angular2 – Ero

+0

@Paul是'total_data'有效的JSON对象吗?它看起来不像控制台输出 – Ero

回答

2

total_data是一个数组,而traffic_data是一个对象。

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

如果你想设置total_data的属性,你应该把它变成一个对象。它似乎没有任何索引值,所以这不应该是一个问题,它可能应该首先是一个对象。

+0

ohh。好。让我尝试一下。 – Paul

+0

你是对的。它应该是一个对象。谢谢。为我节省了很多时间。 – Paul