微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs – 在角镖中键入()的其他方式

我做了角落飞镖教程,我有一个问题.

要声明可用于依赖注入的类型,我必须这样做:

class MyAppModule extends Module {
  MyAppModule() {
    type(RecipeBookController);
  }
}

所有类型都是如此.

一个大型应用程序中,您可以拥有数百种类型,因此声明所有类型是一种奇怪的方式.

有没有其他方法可以做到这一点?

谢谢.

解决方法

您可以使用反射来收集类型.如果您需要有关此方法的更多信息,请添加评论(我尽量避免在网络应用中反映).

编辑
反射可能有效,但是当你开始使用特殊情况时,它会很快变得难以理解.
当您使用DI时,您经常遇到类的构造函数需要InterfaceX类型的对象并且您想要指定实际应该注入满足要求的哪些类(实现接口)的情况.然后你开始用反射编写特殊情况.
使用类型(InterfaceX,implementedBy:Y);总是超级可读.
编辑结束

我不知道你是否认为这是改进,但我们做了什么(我在几个项目中看到过)

创建更多模块并使用install将它们添加到MyAppModule

例如见
https://github.com/akserg/angular.dart.ui/blob/master/lib/accordion/accordion.dart
https://github.com/akserg/angular.dart.ui/blob/master/lib/angular_ui.dart

accordion.dart

class AccordionModule extends Module {
  AccordionModule() {
    type(AccordionComponent);
    type(AccordionheadingComponent);
    type(AccordionGroupComponent);
    value(AccordionConfig,new AccordionConfig());
  }
}

angular_ui.dart

class AngularUIModule extends Module {
  AngularUIModule() {
    install(new AlertModule());
    install(new AccordionModule()); // the above module
    install(new ButtonModule());
    install(new CarouselModule());
    install(new CollapseModule());
    install(new DropdownToggleModule());
    install(new ProgressbarModule());
    install(new ratingModule());
    install(new TabsModule());
    install(new TimeoutModule());
    install(new TransitionModule());
    install(new ModalModule());
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐