diff --git a/src/ngAria/aria.js b/src/ngAria/aria.js index 52538bc0db2a..bec0180f1052 100644 --- a/src/ngAria/aria.js +++ b/src/ngAria/aria.js @@ -228,13 +228,13 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) { if (needsTabIndex) { needsTabIndex = false; return function ngAriaRadioReaction(newVal) { - var boolVal = newVal === attr.value; + var boolVal = (angular.isUndefined(newVal) ? newVal : newVal.toString()) === attr.value; elem.attr('aria-checked', boolVal); elem.attr('tabindex', 0 - !boolVal); }; } else { return function ngAriaRadioReaction(newVal) { - elem.attr('aria-checked', newVal === attr.value); + elem.attr('aria-checked', (angular.isUndefined(newVal) ? newVal : newVal.toString()) === attr.value); }; } } diff --git a/test/ngAria/ariaSpec.js b/test/ngAria/ariaSpec.js index 734472a102a8..2c610f002181 100644 --- a/test/ngAria/ariaSpec.js +++ b/test/ngAria/ariaSpec.js @@ -98,6 +98,19 @@ describe('$aria', function() { expect(element.eq(1).attr('aria-checked')).toBe('true'); }); + it('should handle non-string model values', function() { + var element = $compile('' + + '')(scope); + + scope.$apply("val=0"); + expect(element.eq(0).attr('aria-checked')).toBe('true'); + expect(element.eq(1).attr('aria-checked')).toBe('false'); + + scope.$apply("val=1"); + expect(element.eq(0).attr('aria-checked')).toBe('false'); + expect(element.eq(1).attr('aria-checked')).toBe('true'); + }); + it('should attach itself to role="radio"', function() { scope.$apply("val = 'one'"); compileInput('
');