/** * @ngdoc directive * @name ionRadio * @module ionic * @restrict E * @codepen saoBG * @description * The radio directive is no different than the HTML radio input, except it's styled differently. * * Radio behaves like any [AngularJS radio](http://docs.angularjs.org/api/ng/input/input[radio]). * * @usage * ```html * Choose A * Choose B * Choose C * ``` * * @param {string=} name The name of the radio input. * @param {expression=} value The value of the radio input. * @param {boolean=} disabled The state of the radio input. * @param {string=} icon The icon to use when the radio input is selected. * @param {expression=} ng-value Angular equivalent of the value attribute. * @param {expression=} ng-model The angular model for the radio input. * @param {boolean=} ng-disabled Angular equivalent of the disabled attribute. * @param {expression=} ng-change Triggers given expression when radio input's model changes */ IonicModule .directive('ionRadio', function() { return { restrict: 'E', replace: true, require: '?ngModel', transclude: true, template: '', compile: function(element, attr) { if (attr.icon) { element.children().eq(2).removeClass('ion-checkmark').addClass(attr.icon); } var input = element.find('input'); forEach({ 'name': attr.name, 'value': attr.value, 'disabled': attr.disabled, 'ng-value': attr.ngValue, 'ng-model': attr.ngModel, 'ng-disabled': attr.ngDisabled, 'ng-change': attr.ngChange }, function(value, name) { if (isDefined(value)) { input.attr(name, value); } }); return function(scope, element, attr) { scope.getValue = function() { return scope.ngValue || attr.value; }; }; } }; });