23

我正在尝试使用 ng-repeat 生成表单输入。注意:'customFields' 是一个字段名称数组:["Age", "Weight", "Ethnicity"]。

 <div class="control-group" ng-repeat="field in customFields">
   <label class="control-label">{{field}}</label>
     <div class="controls">
       <input type="text" ng-model="person.customfields.{{field}}" />
     </div>
 </div>

设置“ng-model”的最佳/正确方法是什么?我想将它作为person.customfields.'fieldname'发送到服务器,其中 fieldname 来自 'customFields 中的字段'。

4

4 回答 4

29
<div ng-app ng-controller="Ctrl">
    <div class="control-group" ng-repeat="field in customFields">
        <label class="control-label">{{field}}</label>
        <div class="controls">
            <input type="text" ng-model="person.customfields[field]" />
        </div>
    </div>
    <button ng-click="collectData()">Collect</button>
</div>

function Ctrl($scope) {
    $scope.customFields = ["Age", "Weight", "Ethnicity"];
    $scope.person = {
        customfields: {
            "Age": 0,
                "Weight": 0,
                "Ethnicity": 0
        }
    };

    $scope.collectData = function () {
        console.log($scope.person.customfields);
    }
}

你可以在这里试试。

更新:

对于验证,诀窍是放在<ng-form>中继器内。请尝试

于 2013-07-25T22:38:03.797 回答
6

它应该是:

<input type="text" ng-model="person.customfields[field]" />
于 2013-07-25T18:23:42.947 回答
4

任何关于谁最终来到这里 For ng-modelinsideng-repeat

http://jsfiddle.net/sirhc/z9cGm/

上面的链接很好地描述了如何通过示例使用它

于 2013-10-27T12:04:54.827 回答
-1

试试这个 ng-model="person.customfields."{{field}} 移动了双引号

于 2013-07-25T23:47:23.893 回答