August 06, 2013

Angular controller dependency injection with Coffeescript

After reading that Angular’s new “controller as” syntax available in 1.1.5 works quite nicely with Coffeescript, I was inspired to port some existing Javascript/Angular code to Coffeescript. What was not immediately apparent, however, was how to inject dependencies when using a Coffeescript class as the meat of an Angular controller.

I finally settled upon something like this:

myApp.controller 'YoloController', ['$resource',
  class YoloController
    constructor: ($resource) ->
      @Hipster = $resource('/hipsters')
      @hipsters = @Hipsters.query()

Obviously, you would want to move this resource into a service. And if you needed to use the injection in other class methods, you would want to assign it to a class variable, using Coffeescript’s convenient constructor assignment syntax (note the @ sign): constructor: (@$resource) ->

All content, unless otherwise noted, is licensed under a Creative Commons Attribution 4.0 International License.