【问题标题】:Cannot add second AngularJS Service Factory无法添加第二个 AngularJS 服务工厂
【发布时间】:2015-04-14 20:36:44
【问题描述】:

我尝试将 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 以某种方式“覆盖”了我的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 答案后,我更加困惑为什么我的代码无法正常工作,但也许其他代码会帮助某人发现差异。

【问题讨论】:

  • 您是否在 index.html 中添加了对 EmployeeService.js 的引用?
  • 是的,我做到了。但我添加了 Index.html 中的部分以确保。

标签: angularjs rest factory


【解决方案1】:

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

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

改为在此处添加对ngResource 的依赖,同时在 App/Module 中声明 -

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

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

【讨论】:

  • 我的代码在家,但您似乎完全正确。官方Documentation 甚至有自己的部分“创造与检索”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2023-04-06
相关资源
最近更新 更多