我正在使用odata服务,我想为每个实体类型创建帮助服务,所以在获取元数据后我创建了工厂(这是在角度被靴子剥离之前完成的)
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]);
}
}
当我试图采取“硬编码”的工厂时,一切都还可以 我做错了什么?
答案 0 :(得分:6)
您可以通过从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(){...});
我只是确定这不会发生在可能重复出现的地方
这与提出的here概念相同。