我尝试实现双嵌套对象。 (下面的例子) 问题是我当前的代码是在Object中生成一个数组。
<div ng-if="newResultUnits()" ng-repeat="set in sets" ng-model="newexercise.sets[$index]">
<label>Set {{$index+1}}</label>
<label>
<label>
<input type="text" ng-repeat="resultUnit in newResultUnits()" ng-model="newexercise.sets[$parent.$index][$index].value" placeholder="{{resultUnit.name}}">
</label>
</label>
</div>
示例(稍后添加名称attr):
{
name:"MultiTest",
sets:[
{
0:{
value:"10",
name:"Kg"
},
1:{
value:"10",
name:"Wdh"
}
}
]
}
这应该是这样的:(请注意可疑的[[
和遗失的0:
)
{
"name": "MultiTest",
"sets": [
[
{
"value": "10",
"name": "Kg"
},
{
"value": "10",
"name": "Wdh"
}
]
]
}
对不起,如果我混合了Array和Object ..谢谢!
答案 0 :(得分:1)
您需要正确初始化数据结构。所以在控制器中以
开头$scope.newexercise = { sets: [] };
所以Angular知道你希望$scope.newexercise
成为一个数组。然后在模板中使用每个内循环ng-init="newexercise.sets[$parent.$index] = []"
上的ngInit:
<div ng-repeat="set in sets">
<label>Set {{$index+1}}</label>
<label>
<label>
<input type="text"
ng-repeat="resultUnit in newResultUnits()"
ng-init="newexercise.sets[$parent.$index] = []"
ng-model="newexercise.sets[$parent.$index][$index].value"
placeholder="{{resultUnit.name}}">
</label>
</label>
</div>