我想知道是否有人可以帮助我弄清楚如何连接新的角度服务模块。
我一直收到同样的Javascript错误:
Error: [$injector] Unknown provider: gridHierarchyServiceProvider" <-- gridHierarchyService
我的新服务/ gridHierarchyService.js文件:
(function () {
'use strict';
var controllerId = 'gridHierarchyService';
angular.module('app').controller(controllerId, ['common', gridHierarchyService]);
function gridHierarchyService(common) {
var service = {
getDataSourceSchema: getDataSourceSchema
};
return service;
function getDataSourceSchema() {
var i = 1;
// TESTING...
}
}
});
在我的dashboard.js文件中,我尝试注入这个新的服务模块:
(function () {
'use strict';
var controllerId = 'dashboard';
angular.module('app').controller(controllerId, ['common', 'datacontext', 'gridHierarchyService', dashboard]);
function dashboard(common, datacontext, gridHierarchyService) {
...
}
当然我在index.html中加载它:
<!-- app Services -->
<script src="app/services/datacontext.js"></script>
<script src="app/services/gridHierarchyService.js"></script>
<script src="app/services/directives.js"></script>
然而,我在这里清除遗漏的东西。
我还尝试使用.factory()调用模仿我的datacontext.js服务:
angular.module('app').factory(serviceI,d [...]);
但它不起作用。
========== UPDATE !!! ============
我很高兴地说这是一个非常简单的解决方案,感谢社区!
工作服务:
(function () {
'use strict';
var serviceId = 'gridHierarchyService';
angular.module('app').factory(serviceId, ['common', gridHierarchyService]);
function gridHierarchyService(common) {
var service = {
getDataSourceSchema: getDataSourceSchema
};
return service;
function getDataSourceSchema() {
var i = 1;
i = 2;
}
}
})();
答案 0 :(得分:2)
我看到你在匿名函数中定义了控制器,但是你永远不会执行那些匿名函数。
您的代码:
(function(){
//declarations
alert('You will never see me because I do not execute');
});
固定代码(注意最后的parens):
(function(){
//declarations
alert('You can see me!');
})();
请参阅上面的代码:http://jsfiddle.net/wilsonjonash/cDBc7/
在此处查看有关模块模式的更多信息: http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
此外,您尝试factory
服务是正确的。要将gridHierarchyService变为服务(而不是控制器),只需将controller
更改为factory
或{/ 1}}
service
希望能帮到你。