我有一个"容器"成分
# 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'
答案 0 :(得分:5)
据我所知,没有从父组件的js文件中检索子组件的内置方法。如果您真的想实现这一目标,请参阅我为您准备的twiddle。
从代码中可以看出;在模板中,父项将自身传递给子项,子项将自己注册到父项。请注意,这是代码气味的一个例子,这是我从未在我的项目中使用的东西。
因为,在我看来,你想要实现的目标明显违反了许多原则,即构建于此之上的。为什么要直接从父母那里获取子属性?您可以向子组件注册操作,并获得子组件内各种事件的通知。为什么需要直接访问?组件最好独立工作。在这种方法中,您使用子组件的内部设计考虑因素来污染父代码。您可以通过父级内的jquery查询DOM树,但是获取Ember基础架构为您创建的子组件实例表明您正在尝试设计Ember方法之外的东西。如果您发布另一个问题(或修改此问题)来描述您的意图,我们可以帮助您。可能有人可能会引导您进行更好的设计。最诚挚的问候。