J'essaie de générer des entrées de formulaire avec ng-repeat. Remarque: 'customFields' est un tableau de noms de champs: ["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>
Quelle est la meilleure façon/correcte de définir le "modèle ng"? Je voudrais l'envoyer au serveur sous la forme person.customfields.'fieldname ' où fieldname vient de' 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);
}
}
Vous pouvez l'essayer ici .
Mis à jour:
Pour la validation, l'astuce est de mettre <ng-form>
à l'intérieur du répéteur. Veuillez essayez .
Ça devrait être:
<input type="text" ng-model="person.customfields[field]" />
Tous ceux qui se retrouvent ici pour ng-model
à l'intérieur ng-repeat
http://jsfiddle.net/sirhc/z9cGm/
le lien ci-dessus a une bonne description sur la façon de l'utiliser avec des exemples