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

Access the instance of the component from parent component in EmberJS

我有一个 "container" 组件

# components/container-component.js

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

模板是

# templates/container-component.hbs

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

现在,从 "container-component" 个实例中。如何访问计算的 "displayComponent" 实例?

有什么想法可以解决吗?

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

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

据我所知,没有内置的方法可以从父组件的 js 文件中检索子组件。如果你真的想实现这个,请参考我的twiddle我已经为你准备好了

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

因为,在我看来,您试图实现的目标明显违反了 ember 所依据的许多原则。为什么要直接从父节点获取子节点属性?您可以将操作注册到子组件并获得子组件内各种事件的通知。为什么需要直接访问?一个组件最好自己独立工作。在这种方法中,您正在用子组件的内部设计考虑污染父代码。您可以通过父级中的 jquery 查询 DOM 树,但是获取由 Ember 基础设施为您创建的子组件实例表明您正在尝试设计 [=19] 之外的东西=]的方法。如果您 post 另一个问题(或修改这个问题)来描述您的意图,我们可以更好地帮助您。可能有人可以引导您进行更好的设计。最好的问候。