2016-06-13 32 views
0

在项目中,我有一对夫妇的provider S的我启动如何在配置阶段(角)

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

期间初始化使用工厂正如你可以看到我在这里定义的API路径这是一个串。但是,我怎么能设置一个工厂?或者是定义服务名称并稍后使用$注入器的唯一方法?

回答

0

你只可以使用供应商在配置阶段
换句话说供应商都在AngularJs配置
可能是这样link将是有益的

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'); 
}); 
1

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

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方法。

+0

这是一个不错的解决方案。我已经使用这样的$注入器:'this。$ get = function($ injector){...}'。在我的情况下,依赖关系是可选的,这意味着您可以设置一个或几个服务。据我所知,这不能解决你的问题,这是真的吗? –

+0

@JanancaScaljeri,是的,我想是的。 –

相关问题