我正在使用odata服务,并且想为每种实体类型创建辅助服务,因此在获取元数据之后,我将创建工厂(在对angular进行引导之前完成此操作)
var serviceName = allTypes[type].shortName + 'RepositoryService';
angular.module('app').factory(serviceName, [function() {
function sayHello() {
console.log('hello');
}
return {
sayHello: sayHello
};
}]);
我试图在另一个控制器中使用它
sensorService = $injector.get('CSensorRepositoryService');
我收到一个错误
错误:[$ injector:unpr]未知提供程序:CSensorRepositoryServiceProvider <-CSensorRepositoryService
当遍历所有可用工厂时,我看到该工厂退出了
var mod = angular.module('app');
for (var id in mod._invokeQueue) {
if ((mod._invokeQueue[id])[1] === 'factory') {
console.log( id + " " + ((mod._invokeQueue[id])[2])[0]);
}
}
当我尝试带“硬编码”的工厂时,一切正常,我做错了什么?
您可以通过暴露来自app.config的提供程序来实现此目的...
var app = angular.module('app',[]);
app.config(function($provide){
app.register =
{
factory: $provide.factory,
service: $provide.service,
constant: $provide.constant
};
});
然后在以后的时间...
app.register.factory('myFactory',function(){...});
我只是确定这不会在可能重复发生的地方发生
这与此处介绍的概念相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句