可以使用value
,type
或factory
来注册对象。我试图找到简单的例子如何以及何时使用每种注册类型,但没有成功。
如果有人可以给出简单的例子并解释典型的用例,那将是非常好的。
以下是有关该主题的一些链接:
https://stackoverflow.com/a/21245335/2777805
http://victorsavkin.com/post/72452331552/angulardart-for-angularjs-developers-introduction-to
答案 0 :(得分:2)
<强>型强>
// old syntax
type(SomeType); // or
type(SomeInterface, implementedBy: SomType)
// new syntax
bind(SomeType); // or
bind(SomeInterface, toImplementation: SomType)
默认情况下,DI创建一个实例和所有构造函数参数(如果有任何由DI解析并提供)
<强>值强>
// created inline or e.g. passed in from somewhere as a parameter
// old syntax
value(new SomeType('xxx', 123));
// new syntax
bind(SomeType, toValue: new SomeType('xxx', 123));
如果要传递先前实例化的实例。 我通常将其用于配置设置。
<强>工厂强>
// old syntax
factory(NgRoutingUsePushState,
(_) => new NgRoutingUsePushState.value(false));
// or
factory(UsersRepository, (Injector inj) => new UsersRepository(inj.get(Http)));
// new syntax
bind(NgRoutingUsePushState,toFactory:
(_) => new NgRoutingUsePushState.value(false));
bind(UsersRepository, toFactory: (Injector inj) => new UsersRepository(inj.get(Http)));
(来自http://victorsavkin.com/post/72452331552/angulardart-for-angularjs-developers-introduction-to)
当您希望DI将实例化委派给工厂函数时