为什么这个角度依赖不被捡起?

时间:2014-03-26 17:47:35

标签: html5 angularjs javascript

我有一个有角度的应用程序,我将逻辑分离为单个文件。 app.js,services.js和controllers.js只是存根模块。我在个别文件中提供实现。

我无法获取其中一项服务(依赖于其他服务)来获取我的依赖项。我不断从$ injector说明未知提供商的错误。

所以:在services.js中:

angular.module('myApp.services', ['ngResource']);

controllers.js:

angular.module('myApp.controllers', []);

app.js:

angular.module('myApp', ['myApp.services', 'myApp.controllers']);

settingsService.js:

angular.module('myApp.services').factory('SettingsService', function() { /* implementation here */ });

customerService.js:

angular.module('myApp.services').factory('CustomerService', ['$resource', 'SettingsService', function($resource, settings) {  /* implementation here */ }]);

无论我将$ resource和SettingsService放在哪个顺序,或者即使我只使用其中一个,我也会收到上述的UnknownProvider错误。如果我删除它们并在CustomerService中放置一个测试函数 - 它工作得很好。为了完整起见,以下是我在其他地方引用CustomerService的方法:

customerController.js:

angular.module('myApp.controllers')
.controller('CustomerController', ['$scope', 'CustomerService', function($scope, $customerService) {  /* I can call methods on $customerService just fine here... */

所有文件都包含在我的index.html中,以下是相关的摘录:

<script src="lib/js/angular/angular-resource.js"></script>

<!-- MASTER scripts -->
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>

<!-- App Services -->
<script src="js/services/settingsService.js"></script>
<script src="js/services/menuService.js"></script>
<script src="js/services/customerService.js"></script>

<!-- App Controllers -->
<script src="js/controllers/homeController.js"></script>
<script src="js/controllers/customerController.js"></script>
<script src="js/controllers/todosController.js"></script>

所以是的。救命?我所看到的每个类似的答案和有角度的文档似乎都说我正在做的事情应该有用。

3 个答案:

答案 0 :(得分:0)

angular.module('myApp.controllers', []);

将服务作为依赖项丢失。使用

angular.module('myApp.controllers', ['myApp.services']);

如果您想使用控制器模块中的服务。

答案 1 :(得分:0)

您的注入名称应与工厂中定义的名称相匹配:

angular.module('myApp.services')。factory('CustomerService',['$ resource','SettingsService',函数($ resource, SettingsService ){/ *在这里实现* /}]);

angular.module( 'myApp.controllers') .controller('CustomerController',['$ scope','CustomerService',函数($ scope, CustomerService ){/ *我可以在$ customerService上调用方法就好了...... * / < / p>

答案 2 :(得分:0)

所以我决定从头开始。完全创建了一个新项目,并开始逐个粘贴文件中的代码。现在它有效。

所以答案一直都是......

...黑子? 太阳耀斑? ...尘螨? ......机器里鬼?

我想我很高兴知道我不会疯了。从一开始,这一切对我来说都很好。

感谢。