2012-12-05 34 views
12

Basit bir umarım ..angularjs - çalışma bağımlılığı enjeksiyonu?

Başvuru için bir plunker.

Derleme zamanında bağımlılık belirtmeyi biliyorum (bkz. MainCtrlInjected controller). Fakat çalışma zamanındaki bağımlılığı nasıl azaltacağım ve bu bağımlılığın adını nasıl vereceğim? (bkz. MainCtrlInjectedRuntime denetleyicisi)

cevap

16

http://plnkr.co/edit/iVblEU?p=preview Kod

: Sen derleme sırasında bilinen bağımlılık adları için haklısın

app.controller('MainCtrlInjectedRuntime', [ 
    '$scope', 
    '$injector' 
    ($scope, $injector) -> 

    nameValHandle = 'nameVal' 

    # !!! This is how you inject at runtime 
    name = $injector.get(nameValHandle) 

    $scope.name = name 
]) 
+0

Hey, bu kolaydı, teşekkürler! –

+1

Enjektörün bilinen nesneleri enjekte etmek için kullanıldığını görüyorum, enjektör bir modüle yeni bağımlılıklar ekleyebilir mi? bir widget'ı dinamik olarak ön yüklerken, uygulamayı ekleyebilir miyim, böylece uygulama bunu gösterebilir mi? – Sander

0

Sadece angularjs içine giriyorum, ama bu durumu halletmenin uygun yolunun MainCtrlInjectedRuntime'a bir hizmet enjekte edilmesi gerektiğine inanıyorum. Enjekte edilen servis, somehowGetNameFromValue yönteminize sahip olacaktır. Benim çatallı plunker kontrol

: Sen zamanında değerinizi almak için $ enjektörü kullanabilirsiniz

+0

Zaman, ama bazen çalışma zamanında bu kullanışlı geliyor. Bunu kullanıyorum, bir direktifte, direktifin yapılandırılmasına yardımcı olan bir 'değer' bağımlılığının adına bir özellik ayarlıyorum. Yönergemde bağımlılığı dinamik olarak çözüyorum. –

İlgili konular