238 lines
5.1 KiB
Plaintext
238 lines
5.1 KiB
Plaintext
|
|
p.location-badge.
|
|
exported from <a href='../di'>angular2/di</a>
|
|
defined in <a href="https://github.com/angular/angular/tree/2.0.0-alpha.32/modules/angular2/src/di/binding.ts#L37-L218">angular2/src/di/binding.ts (line 37)</a>
|
|
|
|
:markdown
|
|
Describes how the <a href='Injector-class.html'><code>Injector</code></a> should instantiate a given token.
|
|
|
|
See <a href='bind-function.html'><code>bind</code></a>.
|
|
|
|
## Example
|
|
|
|
```javascript
|
|
var injector = Injector.resolveAndCreate([
|
|
new Binding(String, { toValue: 'Hello' })
|
|
]);
|
|
|
|
expect(injector.get(String)).toEqual('Hello');
|
|
```
|
|
|
|
|
|
.l-main-section
|
|
h2 Members
|
|
.l-sub-section
|
|
h3 constructor
|
|
|
|
|
|
pre.prettyprint
|
|
code.
|
|
constructor(token: any, {toClass, toValue, toAlias, toFactory, deps}:
|
|
{toClass?: Type, toValue?: any, toAlias?: any, toFactory?: Function, deps?: List<any>})
|
|
|
|
:markdown
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 token
|
|
|
|
|
|
:markdown
|
|
|
|
Token used when retrieving this binding. Usually the `Type`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 toClass
|
|
|
|
|
|
:markdown
|
|
|
|
Binds an interface to an implementation / subclass.
|
|
|
|
|
|
|
|
Becuse `toAlias` and `toClass` are often confused, the example contains both use cases for easy
|
|
comparison.
|
|
|
|
```javascript
|
|
|
|
class Vehicle {}
|
|
|
|
class Car extends Vehicle {}
|
|
|
|
var injectorClass = Injector.resolveAndCreate([
|
|
Car,
|
|
new Binding(Vehicle, { toClass: Car })
|
|
]);
|
|
var injectorAlias = Injector.resolveAndCreate([
|
|
Car,
|
|
new Binding(Vehicle, { toAlias: Car })
|
|
]);
|
|
|
|
expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));
|
|
expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);
|
|
|
|
expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));
|
|
expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 toValue
|
|
|
|
|
|
:markdown
|
|
|
|
Binds a key to a value.
|
|
|
|
|
|
|
|
```javascript
|
|
var injector = Injector.resolveAndCreate([
|
|
new Binding(String, { toValue: 'Hello' })
|
|
]);
|
|
|
|
expect(injector.get(String)).toEqual('Hello');
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 toAlias
|
|
|
|
|
|
:markdown
|
|
|
|
Binds a key to the alias for an existing key.
|
|
|
|
An alias means that <a href='Injector-class.html'><code>Injector</code></a> returns the same instance as if the alias token was used.
|
|
This is in contrast to `toClass` where a separate instance of `toClass` is returned.
|
|
|
|
|
|
|
|
Becuse `toAlias` and `toClass` are often confused the example contains both use cases for easy
|
|
comparison.
|
|
|
|
```javascript
|
|
|
|
class Vehicle {}
|
|
|
|
class Car extends Vehicle {}
|
|
|
|
var injectorAlias = Injector.resolveAndCreate([
|
|
Car,
|
|
new Binding(Vehicle, { toAlias: Car })
|
|
]);
|
|
var injectorClass = Injector.resolveAndCreate([
|
|
Car,
|
|
new Binding(Vehicle, { toClass: Car })
|
|
]);
|
|
|
|
expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));
|
|
expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);
|
|
|
|
expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));
|
|
expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 toFactory
|
|
|
|
|
|
:markdown
|
|
|
|
Binds a key to a function which computes the value.
|
|
|
|
|
|
|
|
```javascript
|
|
var injector = Injector.resolveAndCreate([
|
|
new Binding(Number, { toFactory: () => { return 1+2; }}),
|
|
new Binding(String, { toFactory: (value) => { return "Value: " + value; },
|
|
dependencies: [Number] })
|
|
]);
|
|
|
|
expect(injector.get(Number)).toEqual(3);
|
|
expect(injector.get(String)).toEqual('Value: 3');
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 dependencies
|
|
|
|
|
|
:markdown
|
|
|
|
Used in conjunction with `toFactory` and specifies a set of dependencies
|
|
(as `token`s) which should be injected into the factory function.
|
|
|
|
|
|
|
|
```javascript
|
|
var injector = Injector.resolveAndCreate([
|
|
new Binding(Number, { toFactory: () => { return 1+2; }}),
|
|
new Binding(String, { toFactory: (value) => { return "Value: " + value; },
|
|
dependencies: [Number] })
|
|
]);
|
|
|
|
expect(injector.get(Number)).toEqual(3);
|
|
expect(injector.get(String)).toEqual('Value: 3');
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.l-sub-section
|
|
h3 resolve
|
|
|
|
|
|
pre.prettyprint
|
|
code.
|
|
resolve()
|
|
|
|
:markdown
|
|
|
|
Converts the <a href='Binding-class.html'><code>Binding</code></a> into <a href='ResolvedBinding-class.html'><code>ResolvedBinding</code></a>.
|
|
|
|
<a href='Injector-class.html'><code>Injector</code></a> internally only uses <a href='ResolvedBinding-class.html'><code>ResolvedBinding</code></a>, <a href='Binding-class.html'><code>Binding</code></a> contains
|
|
convenience binding syntax.
|
|
|
|
|
|
|
|
|
|
|
|
|