diff options
| author | Misko Hevery | 2010-04-26 16:49:34 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-04-26 16:49:34 -0700 |
| commit | 2a7cd9f39089af08ff42be6fb247116c35e2d345 (patch) | |
| tree | 2291af3eb06371b2778ca1bbf9b3aa03b4779900 | |
| parent | 02fa10f93ce5a75dd925f13ec7456802a6e120e4 (diff) | |
| download | angular.js-2a7cd9f39089af08ff42be6fb247116c35e2d345.tar.bz2 | |
fix ie bug with null and orphans elements
| -rw-r--r-- | src/Angular.js | 15 | ||||
| -rw-r--r-- | src/Compiler.js | 2 | ||||
| -rw-r--r-- | src/jqLite.js | 16 |
3 files changed, 21 insertions, 12 deletions
diff --git a/src/Angular.js b/src/Angular.js index 0c1ab838..8eef7275 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -91,12 +91,15 @@ function extensionMap(angular, name) { } function jqLiteWrap(element) { - if (isString(element)) { - var div = document.createElement('div'); - div.innerHTML = element; - element = new JQLite(div.childNodes); - } else if (!(element instanceof JQLite) && isElement(element)) { - element = new JQLite(element); + // for some reasons the parentNode of an orphan looks like null but its typeof is object. + if (element) { + if (isString(element)) { + var div = document.createElement('div'); + div.innerHTML = element; + element = new JQLite(div.childNodes); + } else if (!(element instanceof JQLite) && isElement(element)) { + element = new JQLite(element); + } } return element; } diff --git a/src/Compiler.js b/src/Compiler.js index 290eb3b7..c77c6b30 100644 --- a/src/Compiler.js +++ b/src/Compiler.js @@ -132,7 +132,7 @@ Compiler.prototype = { directives = false; var parent = element.parent(); template.addInit(widget.call(selfApi, element)); - if (parent) { + if (parent && parent[0]) { element = jqLite(parent[0].childNodes[elementIndex]); } } diff --git a/src/jqLite.js b/src/jqLite.js index 134c1e17..68172fd8 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -220,7 +220,10 @@ JQLite.prototype = { return this[0].innerHTML; }, - parent: function() { return jqLite(this[0].parentNode);}, + parent: function() { + return jqLite(this[0].parentNode); + }, + clone: function() { return jqLite(this[0].cloneNode(true)); } }; @@ -228,11 +231,14 @@ if (msie) { extend(JQLite.prototype, { text: function(value) { var e = this[0]; - if (isDefined(value)) { - e.innerText = value; - } // NodeType == 3 is text node - return e.nodeType == 3 ? e.nodeValue : e.innerText; + if (e.nodeType == 3) { + if (isDefined(value)) e.nodeValue = value; + return e.nodeValue; + } else { + if (isDefined(value)) e.innerText = value; + return e.innerText; + } }, trigger: function(type) { |
