Here's how I did it in a previous project with a custom directive to handle the area. Using a custom directive with a scope in this way is optional. It should still work for you using the ng controller - the difference is in setting the switches in the controller, not html, and then rendering using ng-repeat . ( working plnkr )
radius.html
<div class="row"> <div class="col-sm-12 col-md-12"> <legend class="required">Choose a radius</legend> </div> <div class="col-sm-2 col-md-2"> <fieldset> <div class="form-group" ng-repeat="radius in vm.radiusValues"> <div class="check-radio"> <label for="{{ radius.id }}"> <input type='radio' name="radio" id="{{ radius.id }}" value="{{ radius.value }}" ng-model="vm.radius">{{ radius.name }} </label> </div> </div> </fieldset> <p>Selected value is {{ vm.radius }}</p> </div> </div>
radius.directive.js
(function() { 'use strict'; angular .module('radius', []) .directive('radius', radius) .controller('RadiusCtrl', RadiusCtrl); function radius() { var directive = { bindToController: true, controller: 'RadiusCtrl', controllerAs: 'vm', replace: true, restrict: 'E', scope: {}, templateUrl: 'radius.html' }; return directive; } function RadiusCtrl() { var vm = this; vm.radius = 500; vm.radiusValues = [ {name: '100m', value: 100, id: 'groupidrad1'}, {name: '500m', value: 500, id: 'groupidrad2'}, {name: '1000m', value: 1000, id: 'groupidrad3'}, {name: '2000m', value: 2000, id: 'groupidrad4'} ]; } })();
Body index.html
<body> <radius></radius> </body>
br3w5
source share