我有一个简单的初始化程序,它将单例类注入(inject) View 和组件中。当我在类似
的模板中使用该组件时{{component-name}}
然后我就可以从组件访问注入(inject)的对象。
如果我从代码创建组件的实例:
comp = App.ComponentNameComponent.create()
注入(inject)的对象为空。
注入(inject)仅适用于通过模板添加的组件吗?我需要做一些特殊的事情来注入(inject)我想要以编程方式管理的组件吗?
最佳答案
为了使依赖注入(inject)起作用,您必须从容器中查找组件。当您在模板中使用组件时,Ember 会执行此操作,但当您直接实例化一个组件时,则不会发生这种情况。因此,如果您想要注入(inject)该属性,您应该像这样使用容器:
comp = container.lookup('component:component-name');
Ember 容器查找的每个对象(路由、 Controller 、 View 等)都会自动添加一个 container
属性。因此,假设您想在 Controller 中创建组件的实例,您可以这样做:
comp = this.get('container').lookup('component:component-name');
该容器没有公共(public)文档,因此我的建议是 read the source code .
关于javascript - Ember 组件和依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555641/