如何使用不同的方式在angulardart中注册对象

时间:2014-03-08 20:35:56

标签: dart angular-dart

可以使用valuetypefactory来注册对象。我试图找到简单的例子如何以及何时使用每种注册类型,但没有成功。

如果有人可以给出简单的例子并解释典型的用例,那将是非常好的。

以下是有关该主题的一些链接:

https://stackoverflow.com/a/21245335/2777805

http://victorsavkin.com/post/72452331552/angulardart-for-angularjs-developers-introduction-to

1 个答案:

答案 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将实例化委派给工厂函数时