2013-03-13 40 views
0

下面我有一個名爲Position的工廠,返回整個應用程序需要使用的關於用戶當前位置和其他模型的數據。在這之下是一個名爲Romanize的服務,它與提供翻譯類型的外部URL進行聯繫,但Romanize需要訪問由Position提供的應用數據。我嘗試了通常的DI,但失敗了。我如何將位置注入Romanize作爲依賴項?將服務作爲依賴項傳遞給服務

app.factory('Position', function(){ 
    return{ 
     questionNumber: 0, 
     tutorialNumber: 0, 
     sectionNumber: 0, 
     sections: sections 
    } 
}); 

app.factory('Romanize', ['$http', 'Position', function($http){ 
    alert(Position); 
    return{ 
     Position: Position, 
     get: function(){ 
      $http.get(Position.sections[Position.sectionNumber].romanizeService).success(function(data) { 
       return data; 
      }); 
     } 
    }; 
}]); 

回答

4

您錯過了將Position作爲參數添加到Romanize工廠函數中。

app.factory('Romanize', ['$http', 'Position', function($http, Position){ 

字符串'Position',講述角注入作爲第二個參數的位置服務($http服務是第一)。

+0

啊,所以我做了,謝謝。傳遞給函數的參數是否需要與字符串具有相同的名稱,或者他們是否知道它們只是來自它們所在的位置? – Tules 2013-03-13 18:32:38

+2

不,只有訂單很重要。但是,如果您不使用數組語法,而只使用匿名函數,那麼名稱很重要,但在您的情況下,它們不是。 – Martin 2013-03-13 18:39:25