diff options
| -rw-r--r-- | src/directives.js | 4 | ||||
| -rw-r--r-- | src/jqLite.js | 19 | ||||
| -rwxr-xr-x | test.sh | 2 | ||||
| -rw-r--r-- | test/BinderTest.js | 2 | ||||
| -rw-r--r-- | test/directivesSpec.js | 6 |
5 files changed, 18 insertions, 15 deletions
diff --git a/src/directives.js b/src/directives.js index 4e7c070b..bcc427e8 100644 --- a/src/directives.js +++ b/src/directives.js @@ -254,11 +254,11 @@ angularDirective("ng:hide", function(expression, element){ angularDirective("ng:style", function(expression, element){ return function(element){ - var resetStyle = element.css(); + var resetStyle = getStyle(element); this.$onEval(function(){ var style = this.$eval(expression) || {}, key, mergedStyle = {}; for(key in style) { - if (typeof resetStyle[key] == 'undefined') resetStyle[key] = null; + if (resetStyle[key] === undefined) resetStyle[key] = ''; mergedStyle[key] = style[key]; } for(key in resetStyle) { diff --git a/src/jqLite.js b/src/jqLite.js index a024507f..de1884a3 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -36,6 +36,16 @@ function jqClearData(element) { } } +function getStyle(element) { + var current = {}, style = element[0].style, value; + for (var name in style) { + value = style[name]; + if (1*name != name && name != 'cssText' && value && typeof value == 'string' && value !='false') + current[name] = value; + } + return current; +} + function JQLite(element) { if (isElement(element)) { this[0] = element; @@ -175,15 +185,8 @@ JQLite.prototype = { } else { return style[name]; } - } else if(name) { - extend(style, name); } else { - var current = {}; - for (var i=0; i<style.length; i++) { - name = style[i]; - current[name] = style[name]; - } - return current; + extend(style, name); } }, @@ -4,4 +4,4 @@ if [[ $tests = "" ]]; then fi java -jar lib/jstestdriver/JsTestDriver.jar --tests "$tests" -# java -jar lib/jstestdriver/JsTestDriver.jar --tests "$tests" --config jsTestDriver-jquery.conf +#java -jar lib/jstestdriver/JsTestDriver.jar --tests "$tests" --config jsTestDriver-jquery.conf diff --git a/test/BinderTest.js b/test/BinderTest.js index 1b1201fa..44f918e4 100644 --- a/test/BinderTest.js +++ b/test/BinderTest.js @@ -27,7 +27,7 @@ BinderTest.prototype.testChangingTextfieldUpdatesModel = function(){ state.scope.$eval(); assertEquals('abc', state.scope.model.price); }; - + BinderTest.prototype.testChangingTextareaUpdatesModel = function(){ var c = this.compile('<textarea name="model.note">abc</textarea>'); c.scope.$eval(); diff --git a/test/directivesSpec.js b/test/directivesSpec.js index 8ce949aa..a42faa9a 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -184,13 +184,13 @@ describe("directives", function(){ it('should preserve and remove previus style', function(){ var scope = compile('<div style="color:red;" ng:style="myStyle"></div>'); scope.$eval(); - expect(element.css()).toEqual({color:'red'}); + expect(getStyle(element)).toEqual({color:'red'}); scope.myStyle = {color:'blue', width:'10px'}; scope.$eval(); - expect(element.css()).toEqual({color:'blue', width:'10px'}); + expect(getStyle(element)).toEqual({color:'blue', width:'10px'}); scope.myStyle = {}; scope.$eval(); - expect(element.css()).toEqual({color:'red'}); + expect(getStyle(element)).toEqual({color:'red'}); }); }); |
