我正在尝试做什么
我将一个对象推入一个数组,这可以按预期工作。但是当我尝试通过$ parent更新数组中的一个对象时,$ index和$ index会更新所有对象。
对象被推入阵列(多次)
// 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>
按$ parent更新。$ index和$ index
所以此时我已经多次将$ scope.obj推送到$ scope.arr中,这就是问题发生的地方。
我需要通过代码行更新$ scope.arr中的$ scope.obj中的一个,如下所示:
// 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'
目前,尽管设置了正确的$ parent。$ index和$ index,上面将更新$ scope.arr中的所有插入/推送对象。我需要在哪里定位和更新一个,而不是全部。
我必须在这里遗漏一些东西,非常感谢任何帮助或指导。
答案 0 :(得分:0)
推送时,尝试复制对象,如下所示:
$scope.arr.push(angular.copy($scope.obj));
答案 1 :(得分:0)
因为你保密代码的重要部分(如何将&#34;对象&#34;插入&#34;数组&#34;)我只能猜测,你是&#39; 34;插入&#34;同一个对象到多个地方(意思是:你保持对数组中多个索引中同一个对象的引用,所以基本上你只有1个对象)然后当你在&#34; 1个地方&#34;中更改对象时使用数组[1] .object.a = 2,然后你会看到&#34;每个&#34; index:array [4] .object.a == 2,因为它们实际引用同一个对象