序文-これは「ハウツー」というよりも概念的な議論です。実装する簡単な方法がある場合は、その方法に関するヒントに感謝しますが、なぜこれが不可能なのか、なぜそうでないのか、または良いアイデアではないのかについての洞察を得たいと思っています。あらゆるコメント/建設的な批判を歓迎します。
プロパティ/セッターベースの依存性注入
新しい $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 の強制により、基本コントローラー クラスを超えて拡張する予定がある場合、継承が多少面倒になります。コンストラクターの引数は、すべてのサブクラスに引き継がれる必要があります。さまざまな種類の依存性注入を許可する方法があればいいのにと思います。