angularjs:ng-model双重对象

时间:2015-12-10 09:16:11

标签: javascript angularjs

我尝试实现双嵌套对象。 (下面的例子) 问题是我当前的代码是在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 ..谢谢!

1 个答案:

答案 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>

演示: http://plnkr.co/edit/s1rInT8rLg50ISsSVxyV?p=preview