简体   繁体   中英

Can't understand why my Angular Dependencies aren't resolving?

Why are my modules not available to the $injector service? Console is reporting 'unknown provider' for both my baseHello and geoHello services. Obviously I have missed something fundamental, but for the life-of-me I can't see it!

http://plnkr.co/edit/3Y0WeIH1dCkWKMhRJKnM?p=preview

/**Modules, we flesh these out below**/
angular.module('demo.services',[]);
angular.module('demo.directives',['demo.services']);
angular.module('demo',['demo.services','demo.directives']);

/**Application Module, Dependency on geoHello Service**/
angular.module('demo')
.controller('myCtrl',['$scope', 'geoHello',function($scope,geoHello){
  $scope.test = geoHello.msg
}]);

/**Base Hello Service**/
angular.module("demo.services")
.factory("baseHello",function(r){
  return{
    'msg': 'Hello from ...'
  }
});

/**Service With Dependency on baseHello**/
angular.module("demo.services")
.factory("geoHello",['baseHello',function(baseHello){
  var msg = baseHello.msg.replace("...","world");
  return{
    'msg': msg
  }
}]);

/**Directive With Dependency on geoHello**/
angular.module("demo.directives")
.directive('ngDemo',['geoHello',function(geoHello){
  return{
    'template': geoHello.msg
  }
}]);

angular.bootstrap(document,['demo']);

There is an unresolved dependency (r) in your factory definition baseHello

/**Base Hello Service**/
angular.module("demo.services")
.factory("baseHello",function(r){
  return{
    'msg': 'Hello from ...'
  }
});

I think you have a typo in your code. You have a dependency for the baseHello service called r which is not resolveable. It is not necessary as you do not seem to use it, so if you take it out then your code will run in your Plunker.

Before:

angular.module("demo.services")
.factory("baseHello",function(r){
  return{
    'msg': 'Hello from ...'
  }
});

After:

angular.module("demo.services")
.factory("baseHello",function(){
  return{
    'msg': 'Hello from ...'
  }
});

See here for a working Plunker.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM