Skip to content
Matthew Adams By Matthew Adams Co-Founder
Avoid circular dependencies with AngularJS Directives

A problem you may encounter if you try to implement my previous example in your own code, is that your implementation of templateRepository cannot (apparently) make use of $templateCache, because angular will throw a circular dependency error.

To avoid this, you can inject the $injector service into the templateRepository, and defer the dependency resolution until you make the call.

Something like this:

app.factory('templateRepository', [ '$injector', function($injector) {
  function lookupUrlFor(contentType) {
    // Do your translation here
  }
  
  return {
    getTemplate: function(contentType) {
      var templateCache = $injector.get('$templateCache');
      return templateCache.get(lookupUrlFor(contentType));
    }
  }
}]);

Matthew Adams

Co-Founder

Matthew Adams

Matthew was CTO of a venture-backed technology start-up in the UK & US for 10 years, and is now the co-founder of endjin, which provides technology strategy, experience and development services to its customers who are seeking to take advantage of Microsoft Azure and the Cloud.