fix(ProtoView): element injector should have either a parent or a host

fix #359
This commit is contained in:
Victor Berchet
2015-01-06 13:30:48 +01:00
parent 09092b269c
commit 457cbaa39b
3 changed files with 55 additions and 10 deletions
@@ -49,13 +49,10 @@ export class ProtoElementInjectorBuilder extends CompileStep {
}
_getParentProtoElementInjector(parent, current) {
var parentProtoElementInjector = null;
if (current.isViewRoot) {
parentProtoElementInjector = null;
} else if (isPresent(parent)) {
parentProtoElementInjector = parent.inheritedProtoElementInjector;
if (isPresent(parent) && !current.isViewRoot) {
return parent.inheritedProtoElementInjector;
}
return parentProtoElementInjector;
return null;
}
_collectDirectiveBindings(pipelineElement) {
+5 -3
View File
@@ -309,9 +309,11 @@ export class ProtoView {
// elementInjectors and rootElementInjectors
var protoElementInjector = binder.protoElementInjector;
if (isPresent(protoElementInjector)) {
var parentElementInjector = isPresent(protoElementInjector.parent) ? elementInjectors[protoElementInjector.parent.index] : null;
elementInjector = protoElementInjector.instantiate(parentElementInjector, hostElementInjector);
if (isBlank(parentElementInjector)) {
if (isPresent(protoElementInjector.parent)) {
var parentElementInjector = elementInjectors[protoElementInjector.parent.index];
elementInjector = protoElementInjector.instantiate(parentElementInjector, null);
} else {
elementInjector = protoElementInjector.instantiate(null, hostElementInjector);
ListWrapper.push(rootElementInjectors, elementInjector);
}
}