Я пытаюсь заполнить несколько групп переключателей в цикле и использовать комбинацию имени группы и индекса для имени, чтобы однозначно группировать переключатели. Проблема заключается в том, что только последняя группа в цикле имеет переключатель. Другие группы в цикле ничего не проверяют.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - Dynamically populate Radio buttons in a loop</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
</head>
<body ng-app="radioSetsExample">
<script>
angular.module('radioSetsExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.groups = [{
name: 'group_one',
type: 'CHOOSE'
}, {
name: 'group_two',
type: 'ADD'
},
{
name: 'group_three',
type: 'ADD'
}];
}]);
</script>
<form ng-controller="ExampleController">
<div class="radio-inline" ng-repeat="group in groups">
{{group.name}} - TYPE:
<label>
<input type="radio" name="{{group.name}}_{{$index}}" value="CHOOSE" ng-model="group.type">
Choose
</label>
<label>
<input type="radio" name="{{group.name}}_{{$index}}" value="ADD" ng-model="group.type">
Add
</label>
</div>
</form>
</body>
</html>
Все работает отлично, если я вручную даю уникальное "имя" каждой группе в цикле и не использую индекс. Но я не могу этого сделать, потому что список будет динамичным, и нет уникальных имен. Я должен зависеть от индекса для создания уникальных имен для каждой группы.
Что мне здесь не хватает?
вы можете использовать name="{{group.name+'_'+$index}}"
вместо name="{{group.name}}_{{$index}}"
тогда должно быть хорошо.
<form ng-controller="ExampleController">
<div class="radio-inline" ng-repeat="group in groups">
{{group.name}} - TYPE:
<label>
<input type="radio" name="{{group.name+'_'+$index}}" value="CHOOSE" ng-model="group.type">
Choose
</label>
<label>
<input type="radio" name="{{group.name+'_'+$index}}" value="ADD" ng-model="group.type">
Add
</label>
</div>
</form>
Радио-кнопки требуют уникального свойства имени, что происходит в настоящее время, так как итерация в ng-repeat
, первая итерация дает одно и то же имя group_one_1
для добавления и выбора радио.
Было бы возможно:
<label>
<input type="radio" name="choose_{{$index}}" value="CHOOSE" ng-model="group.type">
Choose
</label>
<label>
<input type="radio" name="add_{{index}}" value="ADD" ng-model="group.type">
Add
</label>