appease IE on CSS styles

This commit is contained in:
Misko Hevery 2010-07-14 17:48:09 -07:00
parent e3e9ac8675
commit 17d2ced9cc
5 changed files with 18 additions and 15 deletions

View file

@ -254,11 +254,11 @@ angularDirective("ng:hide", function(expression, element){
angularDirective("ng:style", function(expression, element){ angularDirective("ng:style", function(expression, element){
return function(element){ return function(element){
var resetStyle = element.css(); var resetStyle = getStyle(element);
this.$onEval(function(){ this.$onEval(function(){
var style = this.$eval(expression) || {}, key, mergedStyle = {}; var style = this.$eval(expression) || {}, key, mergedStyle = {};
for(key in style) { for(key in style) {
if (typeof resetStyle[key] == 'undefined') resetStyle[key] = null; if (resetStyle[key] === undefined) resetStyle[key] = '';
mergedStyle[key] = style[key]; mergedStyle[key] = style[key];
} }
for(key in resetStyle) { for(key in resetStyle) {

View file

@ -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) { function JQLite(element) {
if (isElement(element)) { if (isElement(element)) {
this[0] = element; this[0] = element;
@ -175,15 +185,8 @@ JQLite.prototype = {
} else { } else {
return style[name]; return style[name];
} }
} else if(name) {
extend(style, name);
} else { } else {
var current = {}; extend(style, name);
for (var i=0; i<style.length; i++) {
name = style[i];
current[name] = style[name];
}
return current;
} }
}, },

View file

@ -4,4 +4,4 @@ if [[ $tests = "" ]]; then
fi fi
java -jar lib/jstestdriver/JsTestDriver.jar --tests "$tests" 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

View file

@ -27,7 +27,7 @@ BinderTest.prototype.testChangingTextfieldUpdatesModel = function(){
state.scope.$eval(); state.scope.$eval();
assertEquals('abc', state.scope.model.price); assertEquals('abc', state.scope.model.price);
}; };
BinderTest.prototype.testChangingTextareaUpdatesModel = function(){ BinderTest.prototype.testChangingTextareaUpdatesModel = function(){
var c = this.compile('<textarea name="model.note">abc</textarea>'); var c = this.compile('<textarea name="model.note">abc</textarea>');
c.scope.$eval(); c.scope.$eval();

View file

@ -184,13 +184,13 @@ describe("directives", function(){
it('should preserve and remove previus style', function(){ it('should preserve and remove previus style', function(){
var scope = compile('<div style="color:red;" ng:style="myStyle"></div>'); var scope = compile('<div style="color:red;" ng:style="myStyle"></div>');
scope.$eval(); scope.$eval();
expect(element.css()).toEqual({color:'red'}); expect(getStyle(element)).toEqual({color:'red'});
scope.myStyle = {color:'blue', width:'10px'}; scope.myStyle = {color:'blue', width:'10px'};
scope.$eval(); scope.$eval();
expect(element.css()).toEqual({color:'blue', width:'10px'}); expect(getStyle(element)).toEqual({color:'blue', width:'10px'});
scope.myStyle = {}; scope.myStyle = {};
scope.$eval(); scope.$eval();
expect(element.css()).toEqual({color:'red'}); expect(getStyle(element)).toEqual({color:'red'});
}); });
}); });