2014-03-24 104 views
1

在這裏點擊磚牆,希望得到一些指導。AngularJS改變深度範圍對象值

我建立了一個名爲「顯示」的範圍變量,它構建了2個http調用,我沒有包含這些變量來保持它簡單。基本上我所做的就是將產品類型添加到每個類別對象。

$scope.display = {}; 

portal.fetchCategories().then(function(data) { 
    $scope.categories = data.categories; 
    return portal.fetchProductTypes(); 
}) 
.then(function(data) { 
    $scope.productTypes = data.product_types; 

    angular.forEach($scope.categories, function(value) { 
     $scope.display[value.id] = { 
      title: value.title, 
      start: value.start, 
      end: value.end, 
      product_types: $scope.productTypes 
     }; 
    }); 
}) 

這一切工作正常。

我有麻煩的是,當我的目標是這樣一個類別內的產品類型,並嘗試更新標題:

$scope.display[2].product_types[0]['title'] = "Updated Title"; 

它實際上是更新的產品類型稱號的所有類別,而不是隻是指定的類別。我懷疑它只是更新$ scope.productTypes。

任何人都可以闡明我做錯了什麼?

回答

1

問題是相同的對象引用與所有顯示的產品類型相關聯。你可以通過複製productTypes來克服這一點,如果這足夠而不是問題。

angular.forEach($scope.categories, function(value) { 
    $scope.display[value.id] = { 
     title: value.title, 
     start: value.start, 
     end: value.end, 
     product_types: angular.copy($scope.productTypes) 
    }; 
}); 
+1

太好了。非常感謝 - 感覺它會是這樣的。 – thats4shaw