2012-12-05 161 views
12

簡單的一個我希望..angularjs - 運行時依賴注入?

這裏有一個plunker作爲參考。

我知道如何在編譯時指定依賴項(請參閱MainCtrlInjected控制器)。但是,如何在運行時拉下依賴關係,並給出該依賴關係的名稱? (見MainCtrlInjectedRuntime控制器)

回答

16

您可以使用$噴油器在運行時讓你的價值:

檢查我的分叉plunker:http://plnkr.co/edit/iVblEU?p=preview

代碼:

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

    nameValHandle = 'nameVal' 

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

    $scope.name = name 
]) 
+0

嘿,那很簡單,謝謝! –

+1

我看到注入器可以用於注入已知對象,注入器可以爲模塊添加新的依賴關係嗎?如我在動態預加載小部件時,是否可以將其添加到應用程序中,以便應用程序可以顯示它? – Sander

0

我剛剛進入angularjs,但我相信適當的方式來處理這種情況將注入服務爲MainCtrlInjectedRuntime。注入的服務將有你的somehowGetNameFromValue方法。

+0

你說的沒錯對於那些在編譯知相關性名稱時間,但有時在運行時這會派上用場。我正在使用它的是,在一個指令中,我將一個屬性設置爲「值」依賴項的名稱,以幫助配置該指令。在我的指令中,我動態地解析了依賴關係。 –