问题描述
我可以使用 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>