使用 ng-repeat 和 $index 设置模型属性

问题描述

我可以使用 ng-repeat 和 $index 动态设置模型属性吗?

我正在尝试做这样的事情:

<div ng-repeat="x in [].constructor(10) track by $index">
  <input ng-model="model.prop{{$index}}">    
</div>

我希望我的模型最终像这样(即控制器代码中不存在这属性,我希望它们被动态添加):

{
  "prop0": "val","prop1": "val","prop2": "val","prop3": "val","prop4": "val",...
  "prop10": "val"

  "otherProperty": "xxx"
}

我不希望属性一个数组,我需要在不更改控制器的情况下执行此操作。

谢谢

解决方法

您可以在指令 ng-repeat 中迭代对象(键、值)

控制器

$scope.props = {
  "prop0": "val","prop1": "val","prop2": "val","prop3": "val","prop4": "val",...
  "prop10": "val"
}

HTML

<div ng-repeat="(key,value) in props">
  <input ng-model="props[key]">    
</div>

在某些情况下,您应该避免使用 track by $index,请检查 AngularJs 文档中的 Tracking and Duplicates 和 StackOverflow 上的 When not to use 'track by $index' in an AngularJS ng-repeat?

,

排序,我是这样做的:

<div ng-repeat="x in [].constructor(10) track by $index">
  <input ng-model="model.['prop' + ($index)]">    
</div>