AngularJS directive not being called

Your directive name may be wrong. Angular directives are commonly camel-cased. And when in the HTML they are hypenated. so ngClass turns into ng-class in the HTML.

At least when I've tried to use - or other characters in my directives it hasn't worked.

Check out this Google Group post for some validity: using dash in directive

Also here are the docs: Directives - matching directives

You'll also want to make the change that was suggested in the comments by JoshSGman:

.directive('d3Bars',['$window', 'd3Service', function($window, d3Service) {

the naming of your directive is the problem. Angular normalizes the names of directives in the html before it matches them to the names in JavaScript. The normalization process works in two steps:

  1. Strip x- and data- from the front of the element/attributes.
  2. Convert the colon-, hyphen-, or underscore-delimited name to camelCase.

So, the correct name for your directive in JavaScript would be d3Bars. Change it to that and it should work.

See https://docs.angularjs.org/guide/directive#matching-directives for more information.