3
function Greeter(a) {
  this.greet = function() {

    //How should I declare the dependency for e.g. $http so that I do a GET request here?
    return 'Hello ' + a;
  }
}


provider.service('greeter', Greeter);

如果我使用上述格式,我创建一个类定义,然后使用.service符号,声明服务,我如何使用例如$http或其他依赖项?

这个 AngularJS - 服务、工厂、过滤器等中的依赖注入

在声明服务的地方定义服务时提供解决方案。

4

3 回答 3

2

你也可以试试这个(这也是缩小安全的):

define([ 'components' ], function() {
  angular.module('components.services').provider('dateFormatService', function() {        
    var self = this;

    self.$get = ['aService', 'bService', function (aService, bService) {
      ...
    }
  });
});
于 2013-10-23T12:21:09.867 回答
1

Angular 的注入器基于参数名称进行注入。如果您将注册模块的名称传递给它,它会找到它并自动注入它。

function Greeter($http) { // the injector will inject $http here
  this.greet = function() {

    //How should I declare the dependency for e.g. $http so that I do a GET request here?
    return 'Hello ' + a;
  }
}

请注意,这对于缩小是不安全的,如果您打算缩小代码,请改用语法(并传递一个数组)。

于 2013-10-23T10:55:51.267 回答
1

不管是事先定义类定义还是使用匿名函数,都可以在数组中注解依赖:

function Greeter(b) {
   //provider will inject 'a' service as variable of any name, in this case it's 'b'
}

provider.service('greeter', ['a', Greeter]);

或者,您可以使用.$inject属性:

function Greeter(a) {...}
Greeter.$inject = ['a']; 
于 2013-10-23T11:53:01.463 回答