AngularJS controller being DRY
Constructor arguments aren't declared explicitly. A BaseController sets all injected objects as instance variables based on the $inject array.
by bjoerne
HTML
<div ng-controller="ExampleController">
Hello, {{name}}!
</div>
CoffeeScript
class @BaseController
constructor: (injectionNames, injectedObjects) ->
@inject injectionNames, injectedObjects
inject: (injectionNames, injectedObjects) ->
i = 0
for injectionName in injectionNames
@[injectionName] = injectedObjects[i]
i++
class @ExampleController extends BaseController
@$inject: ['$scope']
constructor: ->
super ExampleController.$inject, arguments
@$scope.name = 'Superhero'
myApp = angular.module 'myApp',[]
angular.bootstrap document, ['myApp']