diff options
| author | Tobias Bosch | 2013-11-26 19:55:02 -0800 |
|---|---|---|
| committer | Tobias Bosch | 2013-12-05 22:16:25 -0800 |
| commit | b0972a2e75909e41dbac6e4413ada7df2d51df3a (patch) | |
| tree | daefd834b62abcbe3ff970e2942cca16f67c491d /src/Angular.js | |
| parent | 2dbb6f9a54eb5ff5847eed11c85ac4cf119eb41c (diff) | |
| download | angular.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.js | 16 |
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); } |
