2017-08-09 73 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