diff options
| -rw-r--r-- | src/Compiler.js | 9 | ||||
| -rw-r--r-- | src/jqLite.js | 5 | ||||
| -rw-r--r-- | src/markups.js | 6 | ||||
| -rw-r--r-- | test/BinderTest.js | 12 | ||||
| -rw-r--r-- | test/testabilityPatch.js | 6 |
5 files changed, 24 insertions, 14 deletions
diff --git a/src/Compiler.js b/src/Compiler.js index a762b5fd..96df88fb 100644 --- a/src/Compiler.js +++ b/src/Compiler.js @@ -182,10 +182,15 @@ function eachNode(element, fn){ } function eachAttribute(element, fn){ - var i, attrs = element[0].attributes || [], chld, attr, attrValue = {}; + var i, attrs = element[0].attributes || [], chld, attr, name, value, attrValue = {}; for (i = 0; i < attrs.length; i++) { attr = attrs[i]; - attrValue[attr.name] = attr.value; + name = attr.name; + value = attr.value; + if (msie && name == 'href') { + value = decodeURIComponent(element[0].getAttribute(name, 2)); + } + attrValue[name] = value; } foreachSorted(attrValue, fn); } diff --git a/src/jqLite.js b/src/jqLite.js index 53f52215..2d41a25c 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -29,7 +29,10 @@ function jqClearData(element) { removeEventListener(element, type, fn); }); delete jqCache[cacheId]; - delete element[jqName]; + if (msie) + element[jqName] = ''; // ie does not allow deletion of attributes on elements. + else + delete element[jqName]; } } diff --git a/src/markups.js b/src/markups.js index 4207d83f..e9c03217 100644 --- a/src/markups.js +++ b/src/markups.js @@ -43,6 +43,12 @@ angularTextMarkup('{{}}', function(text, textNode, parentElement) { } else { newElement = self.text(text); } + if (msie && text.charAt(0) == ' ') { + newElement = jqLite('<span> </span>'); + var nbsp = newElement.html(); + newElement.text(text.substr(1)); + newElement.html(nbsp + newElement.html()); + } cursor.after(newElement); cursor = newElement; }); diff --git a/test/BinderTest.js b/test/BinderTest.js index ec0c1cb4..50e1683a 100644 --- a/test/BinderTest.js +++ b/test/BinderTest.js @@ -16,7 +16,9 @@ BinderTest.prototype.setUp = function(){ }; BinderTest.prototype.tearDown = function(){ - if (this.element && this.element.dealoc) this.element.dealoc(); + if (this.element && this.element.dealoc) { + this.element.dealoc(); + } }; @@ -100,8 +102,8 @@ BinderTest.prototype.testBindingSpaceConfusesIE = function() { '<b><span ng-bind="a"></span><span>'+nbsp+'</span><span ng-bind="b"></span></b>', this.compileToHtml("<b>{{a}} {{b}}</b>")); assertEquals( - '<span ng-bind="A"></span><span>'+nbsp+'x </span><span ng-bind="B"></span><span>'+nbsp+'(</span><span ng-bind="C"></span>', - this.compileToHtml("{{A}} x {{B}} ({{C}})")); + '<b><span ng-bind="A"></span><span>'+nbsp+'x </span><span ng-bind="B"></span><span>'+nbsp+'(</span><span ng-bind="C"></span>)</b>', + this.compileToHtml("<b>{{A}} x {{B}} ({{C}})</b>")); }; BinderTest.prototype.testBindingOfAttributes = function() { @@ -586,13 +588,13 @@ BinderTest.prototype.testItShouldSelectTheCorrectRadioBox = function() { var female = jqLite(c.node[0].childNodes[0]); var male = jqLite(c.node[0].childNodes[1]); - trigger(female, 'click'); + female.trigger('click'); assertEquals("female", c.scope.sex); assertEquals(true, female[0].checked); assertEquals(false, male[0].checked); assertEquals("female", female.val()); - trigger(male, 'click'); + male.trigger('click'); assertEquals("male", c.scope.sex); assertEquals(false, female[0].checked); assertEquals(true, male[0].checked); diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js index 21443fa5..17341575 100644 --- a/test/testabilityPatch.js +++ b/test/testabilityPatch.js @@ -27,12 +27,6 @@ extend(angular, { }); -function trigger(element, type) { - var evnt = document.createEvent('MouseEvent'); - evnt.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - (element[0] || element).dispatchEvent(evnt); -} - function sortedHtml(element) { var html = ""; foreach(element, function toString(node) { |
