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

时间:2016-12-11 18:05:26

标签: ember.js ember-components

我有一个"容器"成分

# components/container-component.js

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

模板是

# templates/container-component.hbs

<div>
  {{component displayComponent}}
</div>

现在,来自&#34;容器组件&#34;实例。如何访问计算的&#34; displayComponent&#34;实例

关于如何实现它的任何想法?

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

this.get('displayComponent') 
# returns (String) 'simple-box'

1 个答案:

答案 0 :(得分:5)

据我所知,没有从父组件的js文件中检索子组件的内置方法。如果您真的想实现这一目标,请参阅我为您准备的twiddle

从代码中可以看出;在模板中,父项将自身传递给子项,子项将自己注册到父项。请注意,这是代码气味的一个例子,这是我从未在我的项目中使用的东西。

因为,在我看来,你想要实现的目标明显违反了许多原则,即构建于此之上的。为什么要直接从父母那里获取子属性?您可以向子组件注册操作,并获得子组件内各种事件的通知。为什么需要直接访问?组件最好独立工作。在这种方法中,您使用子组件的内部设计考虑因素来污染父代码。您可以通过父级内的jquery查询DOM树,但是获取Ember基础架构为您创建的子组件实例表明您正在尝试设计Ember方法之外的东西。如果您发布另一个问题(或修改此问题)来描述您的意图,我们可以帮助您。可能有人可能会引导您进行更好的设计。最诚挚的问候。