代表外部模型字段的 ngRepeat-ed 指令

ngRepeat-ed directives representing fields of external model

obj 成为我的 $scope 中的一个对象,该对象最初为空 parts 数组 属性。 我定义了一个范围函数来在 parts 数组中添加空对象,并且有一个 ng-repeating 指令(在 parts 数组上),它又包含另一个 ng-repeating 指令在描述单个 part 实例的 fields 上(为简单起见,只考虑了两个属性,iddescription,但在我的实际场景中还有更多) . 根据 fieldtype 属性,它被呈现为 <select><input> 标签。理想情况下,<select> 应该从可能的部分列表中获取,并将所选部分(其 iddescription 字段)绑定到 [=29 中的当前 part =],而 description 字段应该提供用户可以进一步修改的默认描述。但我无法让它工作。我记下了 this jsFiddle 以更好地说明我的问题。

如果我单击 "Add part" 并从 <select> 中选择 "foo",我预计:

  1. $scope.obj.parts 数组中第一个(也是唯一一个)元素更改为 {"id":"foo","description":"Foo description"}
  2. <select> 旁边的 <input> 字段相应地显示说明;
  3. 数组元素的description属性要改变如果我编辑<input>.

注意:如果我将绑定从 ng-model="part" 更改(jsFiddle 的第 9 行)到 ng-model="obj.parts[$index]",则点 1.之前的列表有效,但仅在数组的第一个元素上有效(即:如果我添加更多部分,它们都引用 $scope.obj.parts[0])并且问题 2.3. 仍然存在(实际上,所有 <input>s 指的是 $scope.obj.parts[1].description,出于某种原因)。

请帮忙,我无计可施了。干杯。

obj.parts 数组和最外面的 $index 属性 上使用 $parent 范围标识符使其工作。 jsFiddle here.