aboutsummaryrefslogtreecommitdiffstats
path: root/src/Angular.js
diff options
context:
space:
mode:
authorTobias Bosch2013-11-26 19:55:02 -0800
committerTobias Bosch2013-12-05 22:16:25 -0800
commitb0972a2e75909e41dbac6e4413ada7df2d51df3a (patch)
treedaefd834b62abcbe3ff970e2942cca16f67c491d /src/Angular.js
parent2dbb6f9a54eb5ff5847eed11c85ac4cf119eb41c (diff)
downloadangular.js-b0972a2e75909e41dbac6e4413ada7df2d51df3a.tar.bz2
fix($compile): update cloned elements if the template arrives after the cloning
If an element has a directive whose content is loaded using `templateUrl`, and the element is cloned using a linking function before the template arrives, the clone needs to be updated as well. This also updates `ngIf` and `ngRepeat` to keep the connection to the clone of a tranclude function, so that they know about the changes a directive with `templateUrl` does to the element in the future. Fixes to #4930.
Diffstat (limited to 'src/Angular.js')
-rw-r--r--src/Angular.js16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 478ef2a2..b09d3a7f 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -1330,23 +1330,25 @@ function getter(obj, path, bindFnToScope) {
}
/**
- * Return the siblings between `startNode` and `endNode`, inclusive
- * @param {Object} object with `startNode` and `endNode` properties
+ * Return the DOM siblings between the first and last node in the given array.
+ * @param {Array} array like object
* @returns jQlite object containing the elements
*/
-function getBlockElements(block) {
- if (block.startNode === block.endNode) {
- return jqLite(block.startNode);
+function getBlockElements(nodes) {
+ var startNode = nodes[0],
+ endNode = nodes[nodes.length - 1];
+ if (startNode === endNode) {
+ return jqLite(startNode);
}
- var element = block.startNode;
+ var element = startNode;
var elements = [element];
do {
element = element.nextSibling;
if (!element) break;
elements.push(element);
- } while (element !== block.endNode);
+ } while (element !== endNode);
return jqLite(elements);
}