fix(compiler, view): centralize TemplateElement checks and fix inconsistencies
Fixes #189 Closes #194
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import {List, ListWrapper} from 'facade/collection';
|
||||
import {Element, TemplateElement, Node} from 'facade/dom';
|
||||
import {Element, Node, DOM} from 'facade/dom';
|
||||
import {CompileElement} from './compile_element';
|
||||
import {CompileControl} from './compile_control';
|
||||
import {CompileStep} from './compile_step';
|
||||
@ -23,12 +23,7 @@ export class CompilePipeline {
|
||||
_process(results, parent:CompileElement, element:Element) {
|
||||
var current = new CompileElement(element);
|
||||
this._control.internalProcess(results, 0, parent, current);
|
||||
var childNodes;
|
||||
if (element instanceof TemplateElement) {
|
||||
childNodes = element.content.childNodes;
|
||||
} else {
|
||||
childNodes = element.childNodes;
|
||||
}
|
||||
var childNodes = DOM.templateAwareRoot(element).childNodes;
|
||||
for (var i=0; i<childNodes.length; i++) {
|
||||
var node = childNodes[i];
|
||||
if (node.nodeType === Node.ELEMENT_NODE) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import {RegExpWrapper, StringWrapper} from 'facade/lang';
|
||||
import {TemplateElement, Node, DOM} from 'facade/dom';
|
||||
import {Node, DOM} from 'facade/dom';
|
||||
|
||||
import {CompileStep} from './compile_step';
|
||||
import {CompileElement} from './compile_element';
|
||||
@ -17,12 +17,7 @@ var INTERPOLATION_REGEXP = RegExpWrapper.create('\\{\\{(.*?)\\}\\}');
|
||||
export class TextInterpolationParser extends CompileStep {
|
||||
process(parent:CompileElement, current:CompileElement, control:CompileControl) {
|
||||
var element = current.element;
|
||||
var childNodes;
|
||||
if (element instanceof TemplateElement) {
|
||||
childNodes = element.content.childNodes;
|
||||
} else {
|
||||
childNodes = element.childNodes;
|
||||
}
|
||||
var childNodes = DOM.templateAwareRoot(element).childNodes;
|
||||
for (var i=0; i<childNodes.length; i++) {
|
||||
var node = childNodes[i];
|
||||
if (node.nodeType === Node.TEXT_NODE) {
|
||||
|
@ -75,7 +75,12 @@ export class ProtoView {
|
||||
|
||||
instantiate(context, appInjector:Injector):View {
|
||||
var clone = DOM.clone(this.element);
|
||||
var elements = ListWrapper.clone(DOM.getElementsByClassName(clone, NG_BINDING_CLASS));
|
||||
var elements;
|
||||
if (clone instanceof TemplateElement) {
|
||||
elements = ListWrapper.clone(DOM.querySelectorAll(clone.content, `.${NG_BINDING_CLASS}`));
|
||||
} else {
|
||||
elements = ListWrapper.clone(DOM.getElementsByClassName(clone, NG_BINDING_CLASS));
|
||||
}
|
||||
if (DOM.hasClass(clone, NG_BINDING_CLASS)) {
|
||||
ListWrapper.insert(elements, 0, clone);
|
||||
}
|
||||
@ -202,7 +207,7 @@ export class ProtoView {
|
||||
}
|
||||
|
||||
static _collectTextNodes(allTextNodes, element, indices) {
|
||||
var childNodes = DOM.childNodes(element);
|
||||
var childNodes = DOM.templateAwareRoot(element).childNodes;
|
||||
for (var i = 0; i < indices.length; ++i) {
|
||||
ListWrapper.push(allTextNodes, childNodes[indices[i]]);
|
||||
}
|
||||
|
Reference in New Issue
Block a user