2014-01-18 139 views
2

這是比較容易看到這個plunkr問題: http://plnkr.co/edit/EFZCAXWFui0foMbfZkPb?p=preview不同範圍

點擊「點擊先添加」和「點擊添加第二個」,那麼你就可以點擊「鎖'圖標看到一些項目似乎有相同的範圍(或相同的ng模型)。

然後點擊'點擊添加第三'這個動作做一個angular.copy,它不會與其他2共享相同的範圍。爲什麼?

如何區分範圍,以便我可以讓每個「鎖定」圖標僅適用於自身,而不適用於其他項目?

回答

5

在這一行:

var row = {"groupname":Math.floor(Math.random() * 9999999) + 1}; 

創建一個新對象並創建到其被存儲在變量row此對象的引用。您只能將此參考(不是row對象的副本)添加到您的數組中,以便兩個數組中的元素指向同一個對象。

angular.copy爲您的數組創建一個「深層副本」,因此所有包含的對象都將被複制,並且數組包含對這些新對象的引用。

如果你想有單獨的對象,請使用angular.copy在clickFirst功能來複制對象:

var row = {"groupname":Math.floor(Math.random() * 9999999) + 1}; 
$scope.products1.push(row); 
$scope.products2.push(angular.copy(row)); 
+0

感謝。 angular.copy做了訣竅。 –

+0

每天我都會學習一些新的角度。謝謝! –