aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2010-04-26 16:49:34 -0700
committerMisko Hevery2010-04-26 16:49:34 -0700
commit2a7cd9f39089af08ff42be6fb247116c35e2d345 (patch)
tree2291af3eb06371b2778ca1bbf9b3aa03b4779900
parent02fa10f93ce5a75dd925f13ec7456802a6e120e4 (diff)
downloadangular.js-2a7cd9f39089af08ff42be6fb247116c35e2d345.tar.bz2
fix ie bug with null and orphans elements
-rw-r--r--src/Angular.js15
-rw-r--r--src/Compiler.js2
-rw-r--r--src/jqLite.js16
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) {