refactor(ProtoElementInjector): change `instantiate` to take positional args
This commit is contained in:
parent
b5f6417635
commit
9448d78aa8
|
@ -10,7 +10,7 @@ export function run () {
|
||||||
var bindings = [A, B, C];
|
var bindings = [A, B, C];
|
||||||
var proto = new ProtoElementInjector(null, 0, bindings);
|
var proto = new ProtoElementInjector(null, 0, bindings);
|
||||||
for (var i = 0; i < ITERATIONS; ++i) {
|
for (var i = 0; i < ITERATIONS; ++i) {
|
||||||
var ei = proto.instantiate({view:null, parentElementInjector: null});
|
var ei = proto.instantiate(null,null);
|
||||||
ei.instantiateDirectives(appInjector);
|
ei.instantiateDirectives(appInjector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ export function run () {
|
||||||
|
|
||||||
var proto = new ProtoElementInjector(null, 0, bindings);
|
var proto = new ProtoElementInjector(null, 0, bindings);
|
||||||
for (var i = 0; i < ITERATIONS; ++i) {
|
for (var i = 0; i < ITERATIONS; ++i) {
|
||||||
var ei = proto.instantiate({view:null, parentElementInjector: null});
|
var ei = proto.instantiate(null,null);
|
||||||
ei.instantiateDirectives(appInjector);
|
ei.instantiateDirectives(appInjector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ export function run () {
|
||||||
|
|
||||||
var bindings = [A, B, C];
|
var bindings = [A, B, C];
|
||||||
var proto = new ProtoElementInjector(null, 0, bindings);
|
var proto = new ProtoElementInjector(null, 0, bindings);
|
||||||
var ei = proto.instantiate({view:null, parentElementInjector: null});
|
var ei = proto.instantiate(null,null);
|
||||||
|
|
||||||
for (var i = 0; i < ITERATIONS; ++i) {
|
for (var i = 0; i < ITERATIONS; ++i) {
|
||||||
ei.clearDirectives();
|
ei.clearDirectives();
|
||||||
|
|
|
@ -3,6 +3,7 @@ import {Math} from 'facade/math';
|
||||||
import {List, ListWrapper} from 'facade/collection';
|
import {List, ListWrapper} from 'facade/collection';
|
||||||
import {Injector, Key, Dependency, bind, Binding, NoProviderError, ProviderError, CyclicDependencyError} from 'di/di';
|
import {Injector, Key, Dependency, bind, Binding, NoProviderError, ProviderError, CyclicDependencyError} from 'di/di';
|
||||||
import {Parent, Ancestor} from 'core/annotations/visibility';
|
import {Parent, Ancestor} from 'core/annotations/visibility';
|
||||||
|
import {View} from './view';
|
||||||
import {StaticKeys} from './static_keys';
|
import {StaticKeys} from './static_keys';
|
||||||
|
|
||||||
var _MAX_DIRECTIVE_CONSTRUCTION_COUNTER = 10;
|
var _MAX_DIRECTIVE_CONSTRUCTION_COUNTER = 10;
|
||||||
|
@ -148,12 +149,8 @@ export class ProtoElementInjector {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
instantiate({view, parentElementInjector}):ElementInjector {
|
instantiate(parent:ElementInjector, view):ElementInjector {
|
||||||
return new ElementInjector({
|
return new ElementInjector(this, parent, view);
|
||||||
proto: this,
|
|
||||||
parent: parentElementInjector,
|
|
||||||
view: view
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createBinding(bindingOrType) {
|
_createBinding(bindingOrType) {
|
||||||
|
@ -226,7 +223,7 @@ export class ElementInjector extends TreeNode {
|
||||||
@FIELD('_obj8:Object')
|
@FIELD('_obj8:Object')
|
||||||
@FIELD('_obj9:Object')
|
@FIELD('_obj9:Object')
|
||||||
@FIELD('_view:View')
|
@FIELD('_view:View')
|
||||||
constructor({proto, parent, view}) {
|
constructor(proto:ProtoElementInjector, parent:ElementInjector, view) {
|
||||||
super(parent);
|
super(parent);
|
||||||
this._proto = proto;
|
this._proto = proto;
|
||||||
this._view = view;
|
this._view = view;
|
||||||
|
|
|
@ -115,7 +115,7 @@ export class ProtoView {
|
||||||
|
|
||||||
static _createElementInjector(element, parent:ElementInjector, proto:ProtoElementInjector) {
|
static _createElementInjector(element, parent:ElementInjector, proto:ProtoElementInjector) {
|
||||||
//TODO: vsavkin: pass element to `proto.instantiate()` once https://github.com/angular/angular/pull/98 is merged
|
//TODO: vsavkin: pass element to `proto.instantiate()` once https://github.com/angular/angular/pull/98 is merged
|
||||||
return proto.hasBindings ? proto.instantiate({view:null, parentElementInjector:parent}) : null;
|
return proto.hasBindings ? proto.instantiate(parent, null) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static _rootElementInjectors(injectors) {
|
static _rootElementInjectors(injectors) {
|
||||||
|
|
|
@ -68,10 +68,10 @@ export function main() {
|
||||||
|
|
||||||
function injector(bindings, appInjector = null, props = null) {
|
function injector(bindings, appInjector = null, props = null) {
|
||||||
if (isBlank(appInjector)) appInjector = new Injector([]);
|
if (isBlank(appInjector)) appInjector = new Injector([]);
|
||||||
if (isBlank(props)) props = {};
|
if (isBlank(props)) props = {"view" : null};
|
||||||
|
|
||||||
var proto = new ProtoElementInjector(null, 0, bindings);
|
var proto = new ProtoElementInjector(null, 0, bindings);
|
||||||
var inj = proto.instantiate({view: props["view"], parentElementInjector:null});
|
var inj = proto.instantiate(null, props["view"]);
|
||||||
inj.instantiateDirectives(appInjector);
|
inj.instantiateDirectives(appInjector);
|
||||||
return inj;
|
return inj;
|
||||||
}
|
}
|
||||||
|
@ -80,11 +80,11 @@ export function main() {
|
||||||
var inj = new Injector([]);
|
var inj = new Injector([]);
|
||||||
|
|
||||||
var protoParent = new ProtoElementInjector(null, 0, parentBindings);
|
var protoParent = new ProtoElementInjector(null, 0, parentBindings);
|
||||||
var parent = protoParent.instantiate({view: null, parentElementInjector: null});
|
var parent = protoParent.instantiate(null, null);
|
||||||
parent.instantiateDirectives(inj);
|
parent.instantiateDirectives(inj);
|
||||||
|
|
||||||
var protoChild = new ProtoElementInjector(protoParent, 1, childBindings);
|
var protoChild = new ProtoElementInjector(protoParent, 1, childBindings);
|
||||||
var child = protoChild.instantiate({view: null, parentElementInjector: parent});
|
var child = protoChild.instantiate(parent, null);
|
||||||
child.instantiateDirectives(inj);
|
child.instantiateDirectives(inj);
|
||||||
|
|
||||||
return child;
|
return child;
|
||||||
|
@ -97,9 +97,9 @@ export function main() {
|
||||||
var protoChild1 = new ProtoElementInjector(protoParent, 1, []);
|
var protoChild1 = new ProtoElementInjector(protoParent, 1, []);
|
||||||
var protoChild2 = new ProtoElementInjector(protoParent, 2, []);
|
var protoChild2 = new ProtoElementInjector(protoParent, 2, []);
|
||||||
|
|
||||||
var p = protoParent.instantiate({view: null, parentElementInjector: null});
|
var p = protoParent.instantiate(null, null);
|
||||||
var c1 = protoChild1.instantiate({view: null, parentElementInjector: p});
|
var c1 = protoChild1.instantiate(p, null);
|
||||||
var c2 = protoChild2.instantiate({view: null, parentElementInjector: p});
|
var c2 = protoChild2.instantiate(p, null);
|
||||||
|
|
||||||
expect(humanize(p, [
|
expect(humanize(p, [
|
||||||
[p, 'parent'],
|
[p, 'parent'],
|
||||||
|
|
Loading…
Reference in New Issue