通过$ parent。$ index和$ index更新Object $ scope项

时间:2016-01-22 10:41:56

标签: javascript arrays angularjs object

我正在尝试做什么

我将一个对象推入一个数组,这可以按预期工作。但是当我尝试通过$ 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中的所有插入/推送对象。我需要在哪里定位和更新一个,而不是全部。

我必须在这里遗漏一些东西,非常感谢任何帮助或指导。

2 个答案:

答案 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,因为它们实际引用同一个对象