Ответ 1
Обновление 7/31/2015 Это исправлено с 1,3, см. здесь: https://github.com/angular/angular.js/issues/1404#issuecomment-125805732 p >
Оригинальный ответ Это, к сожалению, короткое появление AngularJS на данный момент. Angular проверка формы не работает с динамически именованными полями. Вы можете добавить следующее в нижней части своего HTML, чтобы точно узнать, что происходит:
<pre>{{myForm|json}}</pre>
Как вы можете видеть, Angular не получает имя динамического ввода правильно. В настоящее время существует работа с вовлеченными вложенными формами, которые могут стать отвратительными, но они действительно работают, и (с небольшой дополнительной работой) без проблем отправят родительскую форму.
Если вы хотите, вы можете получить больше поддержки для проблемы: GitHub Issue - проверка динамического элемента. В любом случае, здесь код:
http://jsfiddle.net/langdonx/6H8Xx/2/
HTML:
<div data-ng-app>
<div data-ng-controller="MyController">
<form id="my_form" name="my_form" action="/echo/jsonp/" method="get">
<div data-ng-repeat="field in form.data.fields">
<ng-form name="form">
<label for="{{ field.name }}">{{ field.label }}:</label>
<input type="text" id="{{ field.name }}" name="{{field.name}}" data-ng-model="field.data" required>
<div class="validation_error" data-ng-show="form['\{\{field.name\}\}'].$error.required">Can't be empty.</div>
</ng-form>
</div>
<input type="submit" />
</form>
</div>
</div>
JavaScript:
MyController.$inject = ["$scope"];
function MyController($scope) {
$scope.form = {};
$scope.form.data = {};
$scope.form.data.fields = []
var f1 = {
"name": "input_1",
"label": "My Label 1",
"data": ""
};
var f2 = {
"name": "input_2",
"label": "My Label 2",
"data": ""
};
$scope.form.data.fields.push(f1);
$scope.form.data.fields.push(f2);
}