概念:Angular 1的Setter依赖注入

时间:2015-11-02 17:42:13

标签: dependency-injection coffeescript constructor-injection angularjs-injector property-injection

前言 - 这更像是一个概念性的讨论而不是“如何做”。如果有一个简单的方法可以实现,那么我肯定会感谢你提供的技巧,但我真的想要深入了解为什么不这样做或为什么不可能或者是个好主意。任何和所有评论/建设性批评都是受欢迎的。

基于属性/ setter的依赖注入

新的$ injector API

# pseudo-code

postInjectionHook = 'init'

injectInto = (target)->
    for key of target
       if $injector/this.$has key
           target[key] = $injector.get key

    if target[postInjectionHook] is Function
        target[postInjectionHook]()

简单的控制器示例

angular.module 'app', []
.controller, 'SomeController', class SomeController

  $http: undefined
  $q: undefined

  init: -> #do some work after we get our dependencies
在角落地带的其他地方
uiController = new SomeController
$injector.injectInto uiController

为什么?

我喜欢javaScript的简单性。它是一种非常具有可塑性但功能强大的语言。但是我不认为我是唯一一个来自另一种编程语言的开发人员,他们渴望javascript中缺少某些功能。因此,我利用继承(我知道OMG !!!)来构建我的应用程序开发中的许多基类。具体来说,我的所有角度控制器都继承自键基类(例如baseViewController,basePopupController等)。

如果我计划扩展到基本控制器类之外,Angular强制基于构造函数的 DI会使继承变得有点痛苦。必须将构造函数参数转移到任何子类。我希望有一种方法可以允许不同类型的依赖注入。

0 个答案:

没有答案