迭代ng模型?可能吗?

时间:2015-09-18 09:53:15

标签: angularjs angular-ngmodel angularjs-ng-model

我想创建一个循环,可以在输入中的第一个空值处自动启动,然后连续补充它们。但是,我不知道如何使用ng-model在angularjs中做到这一点。 好吧,我有一个html文件

<input type="text" id="pin" ng-model="inputData.pin" />
 <input type="text" id="pin2" ng-model="inputData.pin2" />

我会控制而不是写

$scope.inputData = { pin : '' };
$scope.inputData = { pin2 : '' };

用于自动循环

for (var key in receivedData) {
                for (var detailKey in receivedData[key]) {
                    $scope.inputData = { detailKey : '' };
                }
            }

当detailKey在顺序引脚pin2中时。

目前,这不起作用。有谁知道怎么做?在此先感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

看起来你误解了如何为对象赋值 - 你必须treat it like an associative array

在您的示例中,您将通过为其提供一个对象文字来重新定义每个迭代中的整个属性$scope.inputData,该对象文字具有单个键detailKey,其值为空字符串('')。

您想要做的是在对象上定义 new 属性,而不是&#39;覆盖&#39;对象本身:

for (var key in receivedData) {
    for (var detailKey in receivedData[key]) {
        $scope.inputData[detailKey] = '';
    }
}

然后,您可以使用ng-repeat指令在Angular模板中迭代此对象中表示的键,从inputData获取每个键并将其值绑定到<input>元素。这会在n

中创建<input> (n === Object.keys(inputData).length)个元素
<input type="text" class="pin"
       ng-repeat="key in inputData"
       ng-model="inputData[key]" />

注意:您不能拥有在同一文档中多次使用的ID。我已将每个<input>元素更改为&#39; pin&#39;代替。

答案 1 :(得分:0)

你能不能只做$scope.inputData = receivedData;

目前您正在做的是每次循环迭代时将inputData重新分配给具有detailKey静态键的对象。