假设我有这个控制器
MyApp.LayoutFooterController = Ember.ObjectController.extend
formData:
name: null,
phone: null,
message: null
cleanFormData: ->
@set('formData.name', null)
@set('formData.phone', null)
@set('formData.message', null)
send: () ->
@container.lookup('api:contact').send(
@get('formData.name'),
@get('formData.phone'),
@get('formData.message')
)
@cleanFormData()
为此,我创建了服务类
MyApp.Api ||= {}
MyApp.Api.Contact = Ember.Object.extend
init(@$, @anotherDep) ->
send: (name, phone, message) ->
console.log name, phone, message
和初始化器
Ember.Application.initializer
name: 'contact'
initialize: (container, application) ->
container.register 'api:contact', MyApp.Api.Contact
问题是,我无法弄清楚如何设置容器以init(@$, @anotherDep)
通过 Ember 容器解决我的服务类依赖项。
谁能给我解释一下,如何使用 Ember.js 依赖注入(或服务定位器,我猜)容器注入其他库或对象?
也许,我根本做得不好。
编辑
当我查看 Ember 的容器源代码时,我找到了一个解决方案:
Ember.Application.initializer
name: 'contact'
initialize: (container, application) ->
container.register 'api:contact', { create: () -> new MyApp.Api.Contact(application.$) }
但这干净吗?