diff --git a/src/ngAria/aria.js b/src/ngAria/aria.js index 8c136676d4ad..11eece27f097 100644 --- a/src/ngAria/aria.js +++ b/src/ngAria/aria.js @@ -115,9 +115,7 @@ function $AriaProvider() { var ariaCamelName = attr.$normalize(ariaAttr); if (config[ariaCamelName] && !attr[ariaCamelName]) { scope.$watch(attr[attrName], function(boolVal) { - if (negate) { - boolVal = !boolVal; - } + boolVal = negate ? !boolVal : !!boolVal; elem.attr(ariaAttr, boolVal); }); } diff --git a/test/ngAria/ariaSpec.js b/test/ngAria/ariaSpec.js index 8bfe301123e6..67c76afcfa9e 100644 --- a/test/ngAria/ariaSpec.js +++ b/test/ngAria/ariaSpec.js @@ -57,6 +57,31 @@ describe('$aria', function() { scope.$apply('val = true'); expect(element.attr('aria-hidden')).toBe('userSetValue'); }); + + it('should always set aria-hidden to a boolean value', function() { + compileElement('
'); + + scope.$apply('val = "test angular"'); + expect(element.attr('aria-hidden')).toBe('true'); + + scope.$apply('val = null'); + expect(element.attr('aria-hidden')).toBe('false'); + + scope.$apply('val = {}'); + expect(element.attr('aria-hidden')).toBe('true'); + + + compileElement('
'); + + scope.$apply('val = "test angular"'); + expect(element.attr('aria-hidden')).toBe('false'); + + scope.$apply('val = null'); + expect(element.attr('aria-hidden')).toBe('true'); + + scope.$apply('val = {}'); + expect(element.attr('aria-hidden')).toBe('false'); + }); });