2

我有一个“容器”组件

# components/container-component.js

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

模板是

# templates/container-component.hbs

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

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

关于我如何去做的任何想法?

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

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

1 回答 1

6

据我所知,没有内置的方法可以从父组件的 js 文件中检索子组件。如果你真的想做到这一点,请参考我为你准备的小窍门。

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

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

于 2016-12-11T18:41:40.663 回答