我正在使用odata服务,我想为每个实体类型创建帮助服务,所以在获取元数据后,我正在创建工厂(这是在角度被引导之前完成的)
var serviceName = allTypes[type].shortName + 'RepositoryService';
angular.module('app').factory(serviceName, [function() {
function sayHello() {
console.log('hello');
}
return {
sayHello: sayHello
};
}]);
Run Code Online (Sandbox Code Playgroud)
我试图在另一个控制器中使用它
sensorService = $injector.get('CSensorRepositoryService');
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误
错误:[$ 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]);
}
}
Run Code Online (Sandbox Code Playgroud)
当我试图采取"硬编码"的工厂时,一切都很好,我做错了什么?
你可以通过从app.config公开提供程序来做到这一点......
var app = angular.module('app',[]);
app.config(function($provide){
app.register =
{
factory: $provide.factory,
service: $provide.service,
constant: $provide.constant
};
});
Run Code Online (Sandbox Code Playgroud)
然后在以后......
app.register.factory('myFactory',function(){...});
Run Code Online (Sandbox Code Playgroud)
我只是确定这不会发生在可能反复发生的某个地方
这与此处介绍的概念相同.