ember.js - 在 EmberJS 中从父组件访问组件的实例

标签 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>

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

关于如何解决这个问题有什么想法吗?

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

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

最佳答案

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

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

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

关于ember.js - 在 EmberJS 中从父组件访问组件的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089339/

相关文章:

javascript - EmberJS : toggleProperty set all properties of a Component to a default value

ember.js - 如何从 Controller 调用组件的方法

ember.js - 为什么Ember.run afterRender无法用于CSS过渡?

ember.js - Ember 并发超时卡在 qunit

ember.js - 获取 ember 组件来维护跨路由转换的状态

ember.js - 有没有一种方法可以表示路由关闭操作,而不是将它们全部写在组件垫片中?

javascript - Ember 助手等待 ajax 请求

javascript - 使用 FixtureAdapter 时如何使用非 -'id' 字段作为主键?

jquery - jQuery Promise 可以与 Ember.RSVP.Promise 链接吗?