1

我无法在我的控制器中使用来自同一模块的两个 angularJS 服务。

我在我的 AppGyver 应用程序(面向 MPA)中使用 AngularJS。

我有以下架构:

- common/services/
            - ServiceCampaign.js
            - ServiceUser.js
- home/scripts/
            - HomeController.js
- home/
            - index.js

ServiceCampaign.js

angular
    .module( 'services', [] )
    .service( 'serviceCampaign', function( $http ) {

      this.getStuff = function(){ return "from service campaign"; };

});

服务用户.js

angular
    .module( 'services', [] )
    .service( 'serviceUser', function( $http ) {

     this.getStuff = function(){ return "from service user"; };

});

HomeController.js

angular
  .module( 'home' )
  .controller( 'HomeController', function($scope, supersonic, serviceUser, serviceCampaign) {

    var campaignStuff = serviceCampaign.getStuff();
    var userStuff = serviceUser.getStuff();

});

index.js(用于依赖注入)

angular.module('home', [
  // Declare any module-specific AngularJS dependencies here
  'common', 'services'
]);

这显然是由于这个不错的错误而失败

Error: [$injector:unpr] Unknown provider: serviceUserProvider <- serviceUser <- HomeController

(如果我只对 HomeController.js 中的“服务”模块添加一个依赖项,它就可以工作)

有没有一种简单的方法可以让这个工作?最佳做法是什么?

谢谢

4

1 回答 1

0

在你的 index.js 之前初始化“服务”

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

angular.module('home', [
  // Declare any module-specific AngularJS dependencies here
  'common', 'services'
]);

而且你可以在没有方括号的情况下完成所有“服务”

angular
    .module( 'services')
    .service( 'serviceCampaign', function( $http ) {
      this.getStuff = function(){ return "from service campaign"; };
});


angular
    .module( 'services')
    .service( 'serviceUser', function( $http ) {

     this.getStuff = function(){ return "from service user"; };

});
于 2015-05-11T17:03:59.863 回答