在项目中,我有一对夫妇的provider
S的我启动如何在配置阶段(角)
angular.module('myApp', [])
.config((barFooProvider, ....) => {
barFooProvider.setAPIPath = '/a/b/c';
...
});
期间初始化使用工厂正如你可以看到我在这里定义的API路径这是一个串。但是,我怎么能设置一个工厂?或者是定义服务名称并稍后使用$注入器的唯一方法?
在项目中,我有一对夫妇的provider
S的我启动如何在配置阶段(角)
angular.module('myApp', [])
.config((barFooProvider, ....) => {
barFooProvider.setAPIPath = '/a/b/c';
...
});
期间初始化使用工厂正如你可以看到我在这里定义的API路径这是一个串。但是,我怎么能设置一个工厂?或者是定义服务名称并稍后使用$注入器的唯一方法?
你只可以使用供应商在配置阶段
换句话说供应商都在AngularJs配置
可能是这样link将是有益的
商都可以在配置阶段所使用的唯一的服务!
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');
});
您可以使用$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
方法。
这是一个不错的解决方案。我已经使用这样的$注入器:'this。$ get = function($ injector){...}'。在我的情况下,依赖关系是可选的,这意味着您可以设置一个或几个服务。据我所知,这不能解决你的问题,这是真的吗? –
@JanancaScaljeri,是的,我想是的。 –