diff --git a/src/ng/directive/ngStyle.js b/src/ng/directive/ngStyle.js index 72c7ce0e544a..16da9bec496b 100644 --- a/src/ng/directive/ngStyle.js +++ b/src/ng/directive/ngStyle.js @@ -47,10 +47,10 @@ */ var ngStyleDirective = ngDirective(function(scope, element, attr) { - scope.$watchCollection(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) { + scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) { if (oldStyles && (newStyles !== oldStyles)) { forEach(oldStyles, function(val, style) { element.css(style, '');}); } if (newStyles) element.css(newStyles); - }); + }, true); }); diff --git a/test/ng/directive/ngStyleSpec.js b/test/ng/directive/ngStyleSpec.js index 89056f539326..b531296d7c0f 100644 --- a/test/ng/directive/ngStyleSpec.js +++ b/test/ng/directive/ngStyleSpec.js @@ -23,6 +23,15 @@ describe('ngStyle', function() { })); + it('should support lazy one-time binding for object literals', inject(function($rootScope, $compile) { + element = $compile('
')($rootScope); + $rootScope.$digest(); + expect(element.css('height')).toBeFalsy(); + $rootScope.$apply('heightStr = "40px"'); + expect(element.css('height')).toBe('40px'); + })); + + describe('preserving styles set before and after compilation', function() { var scope, preCompStyle, preCompVal, postCompStyle, postCompVal, element;