如果首先创建app.userModule.services模块(index.js)然后实例化以创建工厂(UserService.js),为什么会出现以下错误?
未捕获错误:[$ injector:unpr]未知提供者:$ resourceProvider < - $ resource< - UserService
只有我在UserService中创建模块(添加了[' ngResource'] ),该应用才能正常工作。
angular.module('guotay.userModule.services', [ 'ngResource' ]).factory(...
问题:为什么忽略user / services / index.js的内容?
项目结构和代码的某些部分:
的index.html:
<script src="app/app.js"></script>
<script src="app/components/user/index.js"></script>
<script src="app/components/user/controllers/index.js"></script>
<script src="app/components/user/controllers/LoginCtrl.js"></script>
<script src="app/components/user/services/index.js"></script>
<script src="app/components/user/services/UserService.js"></script>
和其他模块一样
用户/ index.js
angular.module('app.userModule', [ 'app.userModule.controllers',
'app.userModule.services' ]).config(function config($routeProvider) {...});
用户/服务/ index.js
angular.module('app.userModule.services', []);
用户/服务/ UserService.js
var serviceId = 'UserService';
angular.module('app.userModule.services').factory(serviceId, [ '$resource',
serviceFunc ]);
function serviceFunc($resource) {...}
app.js
angular.module('app', ['ngRoute', 'ngCookies', 'app.userModule', 'app.newsEntryModule'])
.config(...)
.run(function($rootScope, $location, $cookieStore, UserService) {
UserService.get(function(user) {
$rootScope.user = user;
$location.path(originalPath);
});});
我有其他服务使用相同的实现,它们可以在index.js中创建模块,但它们不会出现在app.js中。
答案 0 :(得分:0)
因为angular.module('someName', ['list', 'of', 'dependencies']);
是定义模块的方式,angular.module('someName')
是获取已定义模块的实例(检索)的方式。
如果您定义相同的模块两次,则第二个定义将覆盖第一个 - 您将丢失在第一个定义中定义的所有内容。
更新:
浏览器首先加载app.js
并且仅在加载app/components/user/services/index.js
之后
因此,根据app.js
中的内容,index.js
中的所有代码都会中断。
这是您无法在UserService
中引用app.js
的原因。它尚未宣布。