前言——这更像是一个概念性的讨论,而不是“如何做”。如果有一种简单的实现方法,那么我当然会感谢有关如何实现的提示,但我真的想深入了解为什么/为什么不这样做是不可能的或一个好主意。欢迎任何和所有评论/建设性批评。
基于属性/设置器的依赖注入
新的 $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 的强制使继承有点痛苦。构造函数参数必须传递给任何子类。我希望有一种方法可以允许不同类型的依赖注入。