#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 и вы) ответы полезны…