diff options
| -rw-r--r-- | src/ng/directive/booleanAttrDirs.js | 2 | ||||
| -rw-r--r-- | test/ng/directive/booleanAttrDirSpecs.js | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/ng/directive/booleanAttrDirs.js b/src/ng/directive/booleanAttrDirs.js index 01134998..fee10ed8 100644 --- a/src/ng/directive/booleanAttrDirs.js +++ b/src/ng/directive/booleanAttrDirs.js @@ -288,7 +288,7 @@ forEach(BOOLEAN_ATTR, function(propName, attrName) { return function(scope, element, attr) { attr.$$observers[attrName] = []; scope.$watch(attr[normalized], function(value) { - attr.$set(attrName, value); + attr.$set(attrName, !!value); }); }; } diff --git a/test/ng/directive/booleanAttrDirSpecs.js b/test/ng/directive/booleanAttrDirSpecs.js index aa84c1ae..d58ffced 100644 --- a/test/ng/directive/booleanAttrDirSpecs.js +++ b/test/ng/directive/booleanAttrDirSpecs.js @@ -23,6 +23,18 @@ describe('boolean attr directives', function() { })); + it('should properly evaluate 0 as false', inject(function($rootScope, $compile) { + // jQuery does not treat 0 as false, when setting attr() + element = $compile('<button ng-disabled="isDisabled">Button</button>')($rootScope) + $rootScope.isDisabled = 0; + $rootScope.$digest(); + expect(element.attr('disabled')).toBeFalsy(); + $rootScope.isDisabled = 1; + $rootScope.$digest(); + expect(element.attr('disabled')).toBeTruthy(); + })); + + it('should bind disabled', inject(function($rootScope, $compile) { element = $compile('<button ng-disabled="isDisabled">Button</button>')($rootScope) $rootScope.isDisabled = false; |
