feat(ElementInjector): change ElementInjector to accept bindings or types
This commit is contained in:
parent
94958e084e
commit
e3b772425e
|
@ -145,7 +145,7 @@ export class ProtoElementInjector extends TreeNode {
|
||||||
@FIELD('_key8:int')
|
@FIELD('_key8:int')
|
||||||
@FIELD('_key9:int')
|
@FIELD('_key9:int')
|
||||||
@FIELD('textNodes:List<int>')
|
@FIELD('textNodes:List<int>')
|
||||||
constructor(parent:ProtoElementInjector, directiveTypes:List, textNodes:List) {
|
constructor(parent:ProtoElementInjector, bindings:List, textNodes:List) {
|
||||||
super(parent);
|
super(parent);
|
||||||
|
|
||||||
this._elementInjector = null;
|
this._elementInjector = null;
|
||||||
|
@ -161,18 +161,18 @@ export class ProtoElementInjector extends TreeNode {
|
||||||
this._binding8 = null; this._keyId8 = null;
|
this._binding8 = null; this._keyId8 = null;
|
||||||
this._binding9 = null; this._keyId9 = null;
|
this._binding9 = null; this._keyId9 = null;
|
||||||
|
|
||||||
var length = directiveTypes.length;
|
var length = bindings.length;
|
||||||
|
|
||||||
if (length > 0) {this._binding0 = this._createBinding(directiveTypes[0]); this._keyId0 = this._binding0.key.id;}
|
if (length > 0) {this._binding0 = this._createBinding(bindings[0]); this._keyId0 = this._binding0.key.id;}
|
||||||
if (length > 1) {this._binding1 = this._createBinding(directiveTypes[1]); this._keyId1 = this._binding1.key.id;}
|
if (length > 1) {this._binding1 = this._createBinding(bindings[1]); this._keyId1 = this._binding1.key.id;}
|
||||||
if (length > 2) {this._binding2 = this._createBinding(directiveTypes[2]); this._keyId2 = this._binding2.key.id;}
|
if (length > 2) {this._binding2 = this._createBinding(bindings[2]); this._keyId2 = this._binding2.key.id;}
|
||||||
if (length > 3) {this._binding3 = this._createBinding(directiveTypes[3]); this._keyId3 = this._binding3.key.id;}
|
if (length > 3) {this._binding3 = this._createBinding(bindings[3]); this._keyId3 = this._binding3.key.id;}
|
||||||
if (length > 4) {this._binding4 = this._createBinding(directiveTypes[4]); this._keyId4 = this._binding4.key.id;}
|
if (length > 4) {this._binding4 = this._createBinding(bindings[4]); this._keyId4 = this._binding4.key.id;}
|
||||||
if (length > 5) {this._binding5 = this._createBinding(directiveTypes[5]); this._keyId5 = this._binding5.key.id;}
|
if (length > 5) {this._binding5 = this._createBinding(bindings[5]); this._keyId5 = this._binding5.key.id;}
|
||||||
if (length > 6) {this._binding6 = this._createBinding(directiveTypes[6]); this._keyId6 = this._binding6.key.id;}
|
if (length > 6) {this._binding6 = this._createBinding(bindings[6]); this._keyId6 = this._binding6.key.id;}
|
||||||
if (length > 7) {this._binding7 = this._createBinding(directiveTypes[7]); this._keyId7 = this._binding7.key.id;}
|
if (length > 7) {this._binding7 = this._createBinding(bindings[7]); this._keyId7 = this._binding7.key.id;}
|
||||||
if (length > 8) {this._binding8 = this._createBinding(directiveTypes[8]); this._keyId8 = this._binding8.key.id;}
|
if (length > 8) {this._binding8 = this._createBinding(bindings[8]); this._keyId8 = this._binding8.key.id;}
|
||||||
if (length > 9) {this._binding9 = this._createBinding(directiveTypes[9]); this._keyId9 = this._binding9.key.id;}
|
if (length > 9) {this._binding9 = this._createBinding(bindings[9]); this._keyId9 = this._binding9.key.id;}
|
||||||
if (length > 10) {
|
if (length > 10) {
|
||||||
throw 'Maximum number of directives per element has been reached.';
|
throw 'Maximum number of directives per element has been reached.';
|
||||||
}
|
}
|
||||||
|
@ -194,8 +194,10 @@ export class ProtoElementInjector extends TreeNode {
|
||||||
return this._elementInjector;
|
return this._elementInjector;
|
||||||
}
|
}
|
||||||
|
|
||||||
_createBinding(directiveType:Type) {
|
_createBinding(bindingOrType) {
|
||||||
var b = bind(directiveType).toClass(directiveType);
|
var b = (bindingOrType instanceof Type) ?
|
||||||
|
bind(bindingOrType).toClass(bindingOrType) :
|
||||||
|
bindingOrType;
|
||||||
var deps = ListWrapper.map(b.dependencies, DirectiveDependency.createFrom);
|
var deps = ListWrapper.map(b.dependencies, DirectiveDependency.createFrom);
|
||||||
return new Binding(b.key, b.factory, deps, b.providedAsPromise);
|
return new Binding(b.key, b.factory, deps, b.providedAsPromise);
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,11 @@ export function main() {
|
||||||
expect(() => injector([NeedDirectiveFromParent])).
|
expect(() => injector([NeedDirectiveFromParent])).
|
||||||
toThrowError('No provider for Directive! (NeedDirectiveFromParent -> Directive)');
|
toThrowError('No provider for Directive! (NeedDirectiveFromParent -> Directive)');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should accept bindings instead of directive types", function () {
|
||||||
|
var inj = injector([bind(Directive).toClass(Directive)]);
|
||||||
|
expect(inj.get(Directive)).toBeAnInstanceOf(Directive);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("special objects", function () {
|
describe("special objects", function () {
|
||||||
|
|
Loading…
Reference in New Issue