从EmberJS中的父组件访问该组件的实例

Pra*_*man 2 ember.js ember-components

我有一个“容器”组件

# components/container-component.js

import Ember from 'ember';
export default Ember.Component.extend({
  displayComponent: 'simple-box'
});
Run Code Online (Sandbox Code Playgroud)

模板是

# templates/container-component.hbs

<div>
  {{component displayComponent}}
</div>
Run Code Online (Sandbox Code Playgroud)

现在,从“容器组件”实例中进行。如何访问计算的“ displayComponent”实例?

关于如何处理的任何想法?

当我使用get方法时,我会得到组件的字符串标识

this.get('displayComponent') 
# returns (String) 'simple-box'
Run Code Online (Sandbox Code Playgroud)

fea*_*r07 5

据我所知,没有内置的方法可以从父组件的js文件中检索子组件。如果您确实想要实现这一目标,请参考我为您准备的旋转技巧

从代码中可以看到;在模板中,父级将自身传递给子级,而子级将自身注册给父级。请注意,这是代码气味的说明,这是我在项目中从未使用过的东西。

因为我认为您要实现的目标明显违反了余烬所基于的许多原则。为什么要直接从父级获取子级资产?您可以将操作注册到子组件,并获得有关子组件内各种事件的通知。为什么需要直接访问?组件最好自己独立工作。在这种方法中,您正在使用子组件的内部设计考虑来污染父代码。您可以通过父级中的jquery来查询DOM树,但是获得Ember基础结构为您创建的子级组件实例表明,您正在尝试设计超出Ember的方法。如果您发布另一个问题(或修改此问题)来描述您的意图,我们可以为您提供更好的帮助。可能有人会引导您进行更好的设计。最好的祝福。