如何在配置阶段使用工厂(角度)

时间:2016-06-13 08:22:42

标签: javascript angularjs

在我的项目中,我有几个provider,我在启动时初始化

angular.module('myApp', [])
    .config((barFooProvider, ....) => {
        barFooProvider.setAPIPath = '/a/b/c';
        ...
    });

正如您所看到的,我在这里定义了一个api-path,它是一个字符串。但是我怎样才能设置工厂?或者是定义服务名称的唯一方法,然后使用$ injector?

3 个答案:

答案 0 :(得分:1)

您可以在提供商的$inject方法中使用$get属性注释(docs):

myApp.provider('test', function() {

    this.setFactoryName = function(name) {
        this.$get.$inject = [name];
    };

    this.$get = function(factory) {
        return { 
            getMessageFromFactory: function() {
                return factory.msg;
            }
        };
    };

    // set default value
    this.setFactoryName('myFactory1');

});

然后以这种方式配置:

myApp.config(function(testProvider){
    testProvider.setFactoryName('myFactory2');
});

这样,在服务实例化时,所需的工厂将被注入您的提供者的$get方法。

答案 1 :(得分:0)

您可以在配置阶段使用提供商 换句话说,提供者可以在AngularJs中配置 可能是这个link会有所帮助

答案 2 :(得分:0)

提供商是唯一可以在配置阶段使用的服务!

app.provider('test', function() {

  // set default path
  var APIPath = 'a/b/c';

  function setAPIPath(path) {
       APIPath =  path;
  }

});


angular.module('app', []).config(function(testProvider) {
  // set path during config
  testProvider.setAPIPath('x/v/b');
});