angularjs module dependencies

Sam picture Sam · Apr 16, 2013 · Viewed 31.2k times · Source

I've defined my main module as such:

angular.module('domiciliations', ['domiciliations.service', 'loggerService', 'person.directives']).
  config(['$routeProvider', function ($routeProvider) {
  $routeProvider.
      when('/domiciliations/mandats', { templateUrl: 'domiciliations/views/mandats.html', controller: mandatsCtrl }).
      when('/domiciliations/mandats/:rum', { templateUrl: 'domiciliations/views/mandat.html', controller: mandatCtrl }).
      otherwise({ redirectTo: '/domiciliations/mandats' });
  }]).
  value('toastr', window.toastr).
  value('breeze', window.breeze);

My problem is how to how specify module dependencies in my controller?

If I do:

angular.module('domiciliations.service', ['ngResource', 'breeze', 'loggerService']).
  factory('Domiciliation', function ($resource, breeze, logger) {
}

Then I get an error 'no module: breeze'.

It works if I do:

angular.module('domiciliations.service', ['ngResource']).
   factory('Domiciliation', function ($resource, breeze, logger) {
}

So how am I suppose to specify dependencies on breeze and logger?

Answer

joakimbl picture joakimbl · Apr 16, 2013

breeze is not a module - it's a value (shorthand for service) in the domiciliations module: value('breeze', window.breeze);.

When you do:

angular.module('domiciliations.service', ['ngResource', 'breeze', 'loggerService']).
  factory('Domiciliation', function ($resource, breeze, logger) {
}

You configure the domiciliations.service module with dependencies to the modules ngResource, breeze and loggerService. Angular can't find the breeze module and throws an exception.

Assuming loggerService is a module and logger is a service in this module, the following should work (breeze and logger will get injected in the factory function):

angular.module('domiciliations.service', ['ngResource','loggerService']).
   factory('Domiciliation', ['$resource','breeze','logger',
     function ($resource, breeze, logger) {
    }
  ])