我尝试将2个服务添加到我的AngularJS模块中。一个人应该访问我的员工和一个我的产品,但我得到一个Unknown provider: EmployeeServiceProvider <- EmployeeService <- BookingController
。
所有Javascript文件都添加到html。
应用/模块
var coffeewatchApp = angular.module('coffeewatchApp', [
'ngRoute',
'coffeewatchControllers',
'coffeewatchServices'
]);
//Routing
var coffeewatchControllers = angular.module('coffeewatchControllers', []);
var coffeewatchServices = angular.module('coffeewatchServices', []);
EmployeeService.js
var coffeewatchServices = angular.module('coffeewatchServices', ['ngResource']);
var employeeServiceUrlPart = "EmployeeService/";
coffeewatchServices.factory('EmployeeService', ['$resource',
function($resource){
return $resource('all/', {}, {
all: {method:'GET',url:REST_BASEURL+employeeServiceUrlPart+"all", params:{}, isArray:true}
});
}]);
ProductController.js与Product
完全相同var coffeewatchServices = angular.module('coffeewatchServices', ['ngResource']);
var productServiceUrlPart = "ProductService/";
coffeewatchServices.factory('ProductService', ['$resource',
function($resource){
return $resource('all/', {}, {
all: {method:'GET',url:REST_BASEURL+productServiceUrlPart+"all", params:{}, isArray:true}
});
}]);
控制器访问两个服务
coffeewatchControllers.controller('BookingController', ['$scope', 'EmployeeService', 'ProductService',
function ($scope, EmployeeService, ProductService) {
$scope.employees = EmployeeService.all();
$scope.products = ProductService.all();
}]);
感谢任何帮助;提前谢谢。
EDIT:
我首先实现了EmployeeService
,一切都很顺利。
所以我真的不明白为什么添加ProductService
会导致我的EmployeeService
被杀。我唯一能想到的是ProductService
以某种方式&#34;覆盖&#34;我EmployeeService
,因为它被注入第二。
所有在index.html中添加的JS文件
<script src="js/config/app-config.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/DashboardController.js"></script>
<script src="js/controllers/StatisticController.js"></script>
<script src="js/controllers/BookingController.js"></script>
<script src="js/services/EmployeeService.js"></script>
<script src="js/services/ProductService.js"></script>
EDITEDIT
在查看this回答之后,我更加困惑为什么我的代码无效,但是其他代码可能会帮助我们找到差异。
答案 0 :(得分:1)
在两个控制器文件中,检索这样的模块(删除依赖项列表) -
var coffeewatchServices = angular.module('coffeewatchServices');
在此处将依赖项添加到ngResource
,而在App / Module中声明 -
var coffeewatchServices = angular.module('coffeewatchServices', ['ngResource']);
您的模块将在ProductController
的第二次调用中重新创建,因此会覆盖以前的模块和服务定义。