Niranjan Godbole
Niranjan Godbole

Reputation: 2175

How to get radio button selected value from dynamically generated radio buttons?

Hi I am developing web application in angularjs. I am generating radiobuttons dynamically using ng-repeat as below.

<ul>
    <li ng-repeat="level in permissions">
        <input name="level.perm_levelname" type="radio" ng-model="level.perm_levelname" value="{{level.perm_levelname}}"> {{level.perm_levelname}}
        <a ng-click="gotopermMap({permisssionID: level.id})">View</a>
    </li>
</ul>
<input type="button" value="APPLY" ng-click="apply()" />

I am trying to get selected radio button as below.

 $scope.apply=function()
        {
            var permname = $scope.name;
            console.log($scope.level.perm_levelname);
        }

I am getting error Cannot read property 'perm_levelname' of undefined. May i get help here to get selected radio button? Thank you

Upvotes: 1

Views: 430

Answers (3)

Ramesh Rajendran
Ramesh Rajendran

Reputation: 38693

Use ng-click event for radio button to get current selected value and assign the value a scope object. then get the value from saved scope abject while you click apply button.

DEMO:

function TodoCtrl($scope) {

$scope.permissions= [{perm_levelname:"hai"},{perm_levelname:"bye"},{perm_levelname:"come"},{perm_levelname:"go"}]
      $scope.apply=function()
        {   
        alert($scope.currecntClickValue);
        }
         $scope.currecntClick=function(currecntClickValue)
         {                                                     
          $scope.currecntClickValue=currecntClickValue.perm_levelname;
         }
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app>
  <h2>Todo</h2>
  <div ng-controller="TodoCtrl">
 <ul>
     <li ng-repeat="level in permissions">       
       <input name="groupName" type="radio" ng-click="currecntClick(level)" ng-value="level.perm_levelname">
       {{level.perm_levelname}}
       <a href="#" ng-click="gotopermMap({permisssionID: level.id})">View</a>
     </li>
   </ul>
   <input type="button" value="APPLY" ng-click="apply()"/>
  </div>
</div>

Upvotes: 1

Azad
Azad

Reputation: 5272

group radio buttons by a name and specify a common scope variable for radio buttons ng-modal

   <ul>
     <li ng-repeat="level in permissions">
       <input name="myradiobtn" type="radio" ng-model="myradioBtnValue" ng-value="level.perm_levelname">
       {{level.perm_levelname}}
       <a ng-click="gotopermMap({permisssionID: level.id})">View</a>
     </li>
   </ul>
   <input type="button" value="APPLY" ng-click="apply()"/>

Upvotes: 1

Shailendra Singh Deol
Shailendra Singh Deol

Reputation: 637

you should use radio button group like this--

<ul>
     <li ng-repeat="level in permissions">
       <input name="btnGroup" type="radio" ng-model="radioButtonValue" value="{{level.perm_levelname}}">
       {{level.perm_levelname}}
       <a ng-click="gotopermMap({permisssionID: level.id})">View</a>
     </li>
   </ul>
   <input type="button" value="APPLY" ng-click="apply()"/>

And inside of Controller-

$scope.radioButtonValue='';

 $scope.apply=function()
        {
            var permname = $scope.name;
            console.log($scope.radioButtonValue);
        }

Upvotes: 0

Related Questions