Я пытаюсь выполнить проверку группы кнопок в угловом ng-повторе.
HTML
<div ng-repeat="driver in drivers">
<input required type="radio" value="M" name="driverGender" ng-model="driver.gender">
<input required type="radio" value="F" name="driverGender" ng-model="driver.gender">
</div>
Атрибут атрибута должен изменяться в каждом повторе. Я попытался добавить значение $ index, но он не работает должным образом, когда драйверы динамически добавляются и удаляются. Каков наилучший способ реализации этого?
Наконец, я нашел одно решение.
<div ng-repeat="driver in drivers">
<div ng-form="radioForm">
<input required type="radio" value="M" name="driverGender{{$index}}" ng-model="driver.gender">
<input required type="radio" value="F" name="driverGender{{$index}}" ngmodel="driver.gender">
{{radioForm.$error}}
</div>
</div>
Теперь валидация происходит в форме ng-формы. Радио кнопки будут сгруппированы, потому что $ index.
вы можете изменить атрибут имени на основе значения индекса, можете ли вы проверить мой ответ в следующей ссылке
В контроллере
$scope.drivers = [{id:1,name:'test',gender:'M'}];
В html
<div ng-repeat="driver in drivers">
<input required type="radio" value="M" name="driverGender{{$index}}" ng-model="driver.gender">
<input required type="radio" value="F" name="driverGender{{$index}}" ng-model="driver.gender">
</div>
В вашем коде все переключатели будут связаны друг с другом, потому что атрибут name для всех одинаковый. Вы должны идентифицировать каждую группу переключателей. Например:
<div ng-repeat="driver in drivers">
<input required type="radio" value="M" name="driverGender[{{driver.id}}]" ng-model="driver.gender">
<input required type="radio" value="F" name="driverGender[{{driver.id}}]" ng-model="driver.gender">
</div>
Просто попробуйте это, если вам нужно, как показано ниже
Подумайте, что это два повтора в модели, тогда код представления должен быть таким
<div ng-repeat="driver in drivers" class="ng-scope">
<input required="" type="radio" value="M" name="driverGender0" ng-model="driver.gender"/>
<input required="" type="radio" value="F" name="driverGender0" ngmodel="driver.gender">
</div>
<div ng-repeat="driver in drivers" class="ng-scope">
<input required="" type="radio" value="M" name="driverGender1" ng-model="driver.gender"/>
<input required="" type="radio" value="F" name="driverGender1" ngmodel="driver.gender"/>
</div>
Итак, это код для получения этого
<div ng-repeat="driver in drivers">
<input required type="radio" value="M" name="driverGender{{$index}}" ng-model="driver.gender">
<input required type="radio" value="F" name="driverGender{{$index}}" ngmodel="driver.gender">
</div>