0

前言——这更像是一个概念性的讨论,而不是“如何做”。如果有一种简单的实现方法,那么我当然会感谢有关如何实现的提示,但我真的想深入了解为什么/为什么不这样做是不可能的或一个好主意。欢迎任何和所有评论/建设性批评。

基于属性/设置器的依赖注入

新的 $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 的强制使继承有点痛苦。构造函数参数必须传递给任何子类。我希望有一种方法可以允许不同类型的依赖注入。

4

0 回答 0