javascript - Ember 组件和依赖注入(inject)

标签 javascript ember.js dependency-injection

我有一个简单的初始化程序,它将单例类注入(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/

相关文章:

javascript - 如何在 Node.js 中将数据从一种方法传输到另一种方法?

ember.js - 如何将 CollectionView 与 connectOutlets 结合使用?

javascript - 为什么成功 promise 的链式回调在成功和失败时都会执行?

java - 单一责任原则和组织 DI 接口(interface)的正确方法

dependency-injection - 如何使用 Microsoft.Extensions.DependencyInjection 注册装饰器?

javascript - 如果在手机设置中禁用了 javascript,phonegap + jquerymobile 应用程序会工作吗?

javascript - 用php编写客户端重定向服务器端

c# - 在 C# 中使用 DI 登录到控制台

javascript - 尝试使用 d3.csv 时出现错误 "data not defined"?

javascript - Ember.js - 如何获取元素的宽度?