AngularJS: ng-model внутри ng-repeat?

Я пытаюсь создать входные данные формы с ng-repeat. Примечание: "customFields" - это массив имен полей: [ "Возраст", "Вес", "Этничность" ].

 <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.

Ответ 1

<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> внутри ретранслятора. Пожалуйста, попробуйте.

Ответ 2

Это должно быть:

<input type="text" ng-model="person.customfields[field]" />

Ответ 3

Любой, кто заканчивается здесь. Для ng-model внутри ng-repeat

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

приведенная ссылка имеет хорошее описание того, как ее использовать с примерами

Ответ 4

Попробуйте это  нг-модель = "person.customfields." {{поле}} Перемещено двойные кавычки