aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jqLite.js5
-rw-r--r--src/widgets.js19
2 files changed, 19 insertions, 5 deletions
diff --git a/src/jqLite.js b/src/jqLite.js
index 8554263a..78fc1655 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -66,7 +66,7 @@ function JQLite(element) {
div.innerHTML = '<div>&nbsp;</div>' + element; // IE insanity to make NoScope elements work!
div.removeChild(div.firstChild); // remove the superfluous div
JQLiteAddNodes(this, div.childNodes);
- this.remove(); // detach the elements form the temporary DOM div.
+ this.remove(); // detach the elements from the temporary DOM div.
} else {
JQLiteAddNodes(this, element);
}
@@ -136,8 +136,7 @@ function JQLiteAddNodes(root, elements) {
? elements
: [ elements ];
for(var i=0; i < elements.length; i++) {
- if (elements[i].nodeType != 11)
- root.push(elements[i]);
+ root.push(elements[i]);
}
}
}
diff --git a/src/widgets.js b/src/widgets.js
index a7d59289..2b44fccc 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -914,6 +914,8 @@ angularWidget('@ng:repeat', function(expression, element){
lastIterElement = iterStartElement,
collection = this.$tryEval(rhs, iterStartElement),
collectionLength = size(collection, true),
+ fragment = (element[0].nodeName != 'OPTION') ? document.createDocumentFragment() : null,
+ addFragment,
childScope,
key;
@@ -938,13 +940,26 @@ angularWidget('@ng:repeat', function(expression, element){
children.push(childScope);
linker(childScope, function(clone){
clone.attr('ng:repeat-index', index);
- lastIterElement.after(clone);
- lastIterElement = clone;
+
+ if (fragment) {
+ fragment.appendChild(clone[0]);
+ addFragment = true;
+ } else {
+ //temporarily preserve old way for option element
+ lastIterElement.after(clone);
+ lastIterElement = clone;
+ }
});
}
index ++;
}
}
+
+ //attach new nodes buffered in doc fragment
+ if (addFragment) {
+ lastIterElement.after(jqLite(fragment));
+ }
+
// shrink children
while(children.length > index) {
children.pop().$element.remove();