Как проверить несколько форм в AngularJS?

#javascript #angularjs #validation

#javascript #angularjs ( ангулярный интерфейс ) #валидация #angularjs #проверка

Вопрос:

Я хочу выполнить проверку для таблицы, в которой есть несколько полей подряд. Строка будет повторяться. Я не могу выполнить проверку, как в форме, потому что строки обрабатываются ngRepeat . Чтобы выполнить проверку в атрибуте name тега from, он будет повторяться, и это становится замешанным во всех строках.

https://plnkr.co/edit/5PUDBxMR184IQnDR9LzR?p=preview

 $scope.addStudent = function(){
var newStud = {};
angular.copy( $scope.objMod, newStud);
$scope.students.push(newStud);
}
  

Ответ №1:

Попробуйте track by $index

 <tr ng-repeat="stud in students track by $index">          
      <td><input type="text" name="name" id="id-{{$index}}" ng-model="stud.name" length="80"><span ng-show="form-stud.name.$error">Error!</span></td>
      <td><input type="text" name="age" id="age-{{$index}}" ng-model="stud.age" max="30" min="8"></td>
      <td><input type="email" name="mail" id="mail-{{$index}}" ng-model="stud.mail"></td>       
</tr>
  

Теперь у вас есть идентификаторы. Вы можете запустить цикл for для проверки перед добавлением.

Ответ №2:

Прежде всего, если вы собираетесь ng-repeat что-то переделывать, вы не должны придавать этому нединамичный вид id . Теперь каждый раз, когда вы добавляете строку, каждая из них имеет одинаковое значение id . Какой смысл вообще иметь это, если это так?

Во-вторых, я рекомендую заглянуть в ngModelController и использовать это как форму, потому что тогда вы можете настроить средства проверки для всей формы, независимо от того, сколько полей у вас есть.

Комментарии:

1. спасибо, да… Я знаю, что может работать со многими полями. Я застрял на том, как с ними обращаться. ваши (@sisyphus и вы) ответы полезны…