fix(compiler): fix nextSibling iterator in compiler.

Due to DOM manipulations happening during compilation, it is not correct
to call nextSibling after compilation steps.
This commit is contained in:
Rado Kirov
2015-01-07 11:54:10 -08:00
parent ef20b706aa
commit a6a6273263
2 changed files with 13 additions and 3 deletions
@@ -25,11 +25,14 @@ export class CompilePipeline {
_process(results, parent:CompileElement, current:CompileElement) {
var additionalChildren = this._control.internalProcess(results, 0, parent, current);
var node = DOM.templateAwareRoot(current.element).firstChild;
while (isPresent(node)){
if(node.nodeType === Node.ELEMENT_NODE) {
while (isPresent(node)) {
// compiliation can potentially move the node, so we need to store the
// next sibling before recursing.
var nextNode = DOM.nextSibling(node);
if (node.nodeType === Node.ELEMENT_NODE) {
this._process(results, current, new CompileElement(node));
}
node = DOM.nextSibling(node);
node = nextNode;
}
if (isPresent(additionalChildren)) {