I'm trying to generate form inputs with ng-repeat. Note: 'customFields' is an array of field names: ["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>
What is the best/correct way to set 'ng-model'? I would like to send it to the server as person.customfields.'fieldname' where fieldname comes from 'field in customFields'.
<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); } }
You can try it here.
Updated:
For the validation, the trick is to put <ng-form>
inside the repeater. Please try.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With