2016-01-22 40 views
1

林試圖怎麼辦

林推對象到一個數組,這樣按預期工作。但是,當我嘗試通過他們的父母$,$指數和$索引更新數組中的一個對象的所有對象進行更新。

對象被推入陣列(多次)

// Array for Objects 
$scope.arr = [] 
// Object to be pushed into Array 
$scope.obj = { 
    content:[ 
     { 
     type:"text", 
     data:"This is Dummy Text", 
     style:{ 
      "height":"500px" 
     } 
     }, 
     // Could be more than one Object within Content 
    ] 
} 

上述目的將被推入$ scope.arr多次,對象被環的視圖內。

// Looped Arrays 
<div ng-repeat="l1 in arr track by $index"> 
    <div ng-repeat="l2 in l1.content" ng-style="l1.style">{{l1.data}}</div> 
</div> 

更新由$父。$指數和$指數

所以在這一點我已在$ scope.obj多次被推到$ scope.arr而這正是問題的發生。

我需要通過這樣一行代碼的更新只有$ scope.obj的在$ scope.arr下列操作之一:

// Set $index's to target the specific array items 
var parentIndex = 0 
var index = 0 
$scope.arr[parentIndex].content[index].style['height'] 

可能的更新的一個例子是以下幾點:

var o = parseInt($scope.arr[parentIndex].content[index].style['height']) 
var n = o + 1 
$scope.arr[parentIndex].content[index].style['height'] = new + 'px' 

目前,上述將更新所有插入/推入$ scope.arr對象,儘管設置正確的$父。$指數和$指數。我需要針對並更新一個,而不是全部。

我必須在這裏失去了一些東西,任何幫助或指導是極大的讚賞。

+0

能否請你重新讀一遍你的闕並改正它?你指的對象和數組,但它看起來像任你混合一些事情,或者你不想想他們在傳統的方式。 {}是一個對象,[]是一個數組。不管你如何調用變量(雖然它可以幫助你連續調用它們) – Gavriel

+0

「new」是一個關鍵詞,它不能用於你的變量名。 – Gavriel

+0

@Gavriel我剛剛糾正它。變量「新」只是作爲一個例子,但這是很好的知道。 – HireLee

回答

0

推時,儘量做對象的副本,像這樣:

$scope.arr.push(angular.copy($scope.obj)); 
0

既然你把你的代碼祕密的重要組成部分(你如何將「對象」到「陣列」)我只能猜測,那你「插入」同一個對象到多個地方(意思是:你保持參照陣列中的多個索引同一個對象,所以基本上你只有1對象),然後當你改變對象在「1個地方」使用數組[1] .object.a = 2,那麼系統會在「每個」指數的變化:陣列[4] .object.a == 2,因爲它們是指相同的對象實際上