无法添加第二个AngularJS Service Factory

时间:2015-04-14 20:36:45

标签: angularjs rest factory

我尝试将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回答之后,我更加困惑为什么我的代码无效,但是其他代码可能会帮助我们找到差异。

1 个答案:

答案 0 :(得分:1)

在两个控制器文件中,检索这样的模块(删除依赖项列表) -

var coffeewatchServices = angular.module('coffeewatchServices');

在此处将依赖项添加到ngResource,而在App / Module中声明 -

var coffeewatchServices = angular.module('coffeewatchServices', ['ngResource']);

您的模块将在ProductController的第二次调用中重新创建,因此会覆盖以前的模块和服务定义。