2014-04-09 20 views
0

腳本:angular.injector(..)調用控制檯沒有返回一個單身

app = angular.module('app', []) 

app.factory 'MyFactory', -> 
    val: 'Clark Kent' 

app.controller 'MainCtrl', ($scope, MyFactory) -> 
    MyFactory.val = 'Waldo' 
    $scope.myFactory = MyFactory 

在控制檯將這個:

angular.injector(['ng','app']).invoke(function(MyFactory) { console.log(MyFactory); }) 

的......而是Waldo,你得到Clark Kent

爲什麼它不返回相同的對象?

在角退房the plunkr

+0

你肯定'MainCtrl'實際上已經執行?因爲你在那裏寫的東西看起來不像它會調用'MainCtrl',這意味着一切都按照它的行爲。 –

+0

是的,MainCtrl被調用,這就是爲什麼在plunkr中它會在輸出 –

回答

4

服務都在,他們只是每個噴射創建一次感覺單身。

angular.injector但是創建了一個新的注射器功能。

若想獲得最新的應用程序注入:angular.element(domElement).injector()

對於示例:

angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); }) 
+0

中說'Hello Waldo'請看看角度文檔,它說「以下總是成立」。這與您的「angular.injector創建新注射器」的說法不矛盾嗎? http://docs.angularjs.org/api/auto/service/$injector –

+1

否。在示例中,angular.injector用於創建新的噴油器。然後,該注射器用於檢索自己,這是它能夠。 – tasseKATT

相關問題