Какова наилучшая практика создания контроллеров angular с использованием классов сценариев кофе? Я некоторое время гуглил, но пока не нашел действительно хорошего решения.
Согласно этой статьи автор предлагает следующий подход:
angular.module('myApp').controller 'SomeCtrl',
class SomeCtrl
someModels: -> ...
Однако не уточняется, как делать какие-либо инъекции в такой контроллер. Поскольку кофе автоматически перемещает все методы в прототип конструктора, я не смогу получить доступ к внедренным службам в этих методах.
Пока единственный способ обойти это:
angular.module('myApp').controller 'SomeCtrl',
class SomeCtrl
@$inject: ['SomeService']
constructor: (someService) ->
@load = ->
# access to someService
Очевидно, что это довольно уродливо, не говоря уже о неэффективном использовании памяти.
Итак, вопрос в том, как лучше всего определить угловой контроллер с помощью кофейных вкусностей?
РЕДАКТИРОВАТЬ:
Есть еще один вариант явного использования инжектора:
app = angular.module('myApp')
injector = angular.injector([app.name])
injector.invoke ['SomeService', (SomeService) ->
app.controller 'SomeCtrl',
class SomeCtrl
foo: 'bar'
func: ->
# Prototype function with access to SomeService without exposing it in API.
]
Это, однако, делает порядок кода зависимым и чертовски уродливым.
В идеале я бы искал какой-то способ определить контроллер как фабрику - вместо передачи функции конструктора я хотел бы передать функцию, которая должна возвращать конструктор. Возможно ли что-то подобное?