在我的项目中,我有几个provider
,我在启动时初始化
angular.module('myApp', [])
.config((barFooProvider, ....) => {
barFooProvider.setAPIPath = '/a/b/c';
...
});
正如您所看到的,我在这里定义了一个api-path,它是一个字符串。但是我怎样才能设置工厂?或者是定义服务名称的唯一方法,然后使用$ injector?
答案 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');
});