in ng-repeat
directive creates child scope for each and every iteration
check the documentation
Each template instance gets its own scope
so when repeating there is a scope variable called selectedLicense
in each and every child scope. so your $scope.selectedLicense
not bind to the radio
buttons as expected.
here you can use prototypical inheritance, here is the great answer for what is JavaScript Prototypal Inheritance
$scope.x = {};
$scope.x.selectedLicense = $scope.licenses[0].nrOfLicenses;
<input type="radio" ng-model="x.selectedLicense" ng-value="lic.nrOfLicenses"></input>
// here angular search the `selectedLicense` in the child scope and then it will search the x object in parent scope after it detect there is no `selectedLicense` in the child scope.
here is the demo Fiddle
in the above example radio buttons are bind to the nrOfLicenses
property in the object.
if you want to bind the radio
to the whole object, then follow this
$scope.x = {};
$scope.x.selectedLicense = $scope.licenses[0];
<input type="radio" ng-model="x.selectedLicense" ng-value="lic"></input>
here is the demo Fiddle