2013-03-13 72 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