From e3e9ac86750b20fb8ad6765011e06d569899612d Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 14 Jul 2010 17:07:23 -0700 Subject: ng:style remembers previous style and properly resets to it --- src/directives.js | 11 ++++++++++- src/jqLite.js | 9 ++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/directives.js b/src/directives.js index 6b81d864..4e7c070b 100644 --- a/src/directives.js +++ b/src/directives.js @@ -254,8 +254,17 @@ angularDirective("ng:hide", function(expression, element){ angularDirective("ng:style", function(expression, element){ return function(element){ + var resetStyle = element.css(); this.$onEval(function(){ - element.css(this.$eval(expression) || {}); + var style = this.$eval(expression) || {}, key, mergedStyle = {}; + for(key in style) { + if (typeof resetStyle[key] == 'undefined') resetStyle[key] = null; + mergedStyle[key] = style[key]; + } + for(key in resetStyle) { + mergedStyle[key] = mergedStyle[key] || resetStyle[key]; + } + element.css(mergedStyle); }, element); }; }); diff --git a/src/jqLite.js b/src/jqLite.js index 68172fd8..a024507f 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -175,8 +175,15 @@ JQLite.prototype = { } else { return style[name]; } - } else { + } else if(name) { extend(style, name); + } else { + var current = {}; + for (var i=0; i