2014-06-24 55 views
0

我有一個模塊「global.services」在我註冊的服務「Restservices」角服務,這是一個需要JS模塊,沒有得到注入依賴

(function(define, angular) { 
"use strict"; 

define(["global/services/restServices"], 
    function(RestServices) { 
     var moduleName = "global.services"; 

     angular.module(moduleName, []) 
      .config(function(RestangularProvider) { 
       RestangularProvider.setBaseUrl('http://localhost:8888/src/app/data/'); 
       RestangularProvider.setRequestSuffix('.json'); 
      }) 
      .factory('RestServices', RestServices); 
     return moduleName; 
    }); 
}(define, angular)); 

和我的「RestService」也一個模塊

(function(define, angular) { 
"use strict"; 

define(function() { 
    var restService = function($rootScope, Restangular) { 
     // body... 

     return { 
      getData: function(arg) { 
       // body... 
       $rootScope.$broadcast('gettingData'); 
       return Restangular.oneUrl('listPanel'); 
      } 
     } 
    }; 
    return restService; 
}); 
}(define, angular)); 

在上述服務中,$ rootScope和Restangular都是未定義的。 請告訴我如何在這方面注入依賴關係。

+0

也發佈html代碼,您是否添加了所有必需的文件引用? –

回答

0

我發現$ rootScope和Restangular是不確定的原因。

工廠註冊是完美的,但是當我試圖在不同模塊的控制器中使用它時,我正在注入「global/services/restServices」而不是實際服務模塊的「global/services/services」。

以前的代碼:

(function(define, angular) { 
define(['global/services/restServices'], function(RestServices) { 
    var HeaderController = function($scope, $rootScope, $translate, $location, $document, RestServices) { 

     var user_modules = window.SESSION.getModules(), 
      modules = []; 

     angular.forEach(user_modules, function(moduleName) { 
      modules.push(window.CONFIG.MODULES[moduleName]); 
     }); 

     RestServices.getData('webAppsData.json').get().then(function(d) { 
      if (d) { 
       if (d.response) { 
        $scope.webApps = d.response; 
       } else { 
        $scope.webApps = []; 
       } 
      } else { 
       $scope.webApps = []; 
      } 
     }); 
     $scope.title = "Tumbler"; 
     $scope.modules = modules; 
    }; 
    return ["$scope", "$rootScope", "$translate", "$location", "$document", "RestServices", HeaderController]; 
}) 
}(define, angular)); 

本次代碼(工作):

(function(define, angular) { 
define(['global/services/services'], function() { 
    var HeaderController = function($scope, $rootScope, $translate, $location, $document, RestServices) { 

     var user_modules = window.SESSION.getModules(), 
      modules = []; 

     angular.forEach(user_modules, function(moduleName) { 
      modules.push(window.CONFIG.MODULES[moduleName]); 
     }); 

     RestServices.getData('webAppsData.json').get().then(function(d) { 
      if (d) { 
       if (d.response) { 
        $scope.webApps = d.response; 
       } else { 
        $scope.webApps = []; 
       } 
      } else { 
       $scope.webApps = []; 
      } 
     }); 
     $scope.title = "Tumbler"; 
     $scope.modules = modules; 
    }; 
    return ["$scope", "$rootScope", "$translate", "$location", "$document", "RestServices", HeaderController]; 
}) 
}(define, angular)); 

所以,只要注入模塊,並使用它的服務。