如何在Ember中从父组件访问子组件



这个概念相当简单。

假设我有一个子组件,它有自己独立的js和hbs。子组件。哈佛商学院=祝辞

<Button options = {{listOptions}} selected={{selectedOption}}
> Submit <Button

Child-component.js

listOptions =[{id: 124, name: 'Mywork'}
selected => performing an action after getting the value from hbs selection.

现在我将它导入到另一个组件Main-component.hbs中,就像这样

<ChildComponent />

这是按预期的选项和所有渲染,但基于selectedOption,我想在我的主要组件中做一些事情。在主组件中处理动作对我来说不是一个选择,因为这不是我被告知要做的。有可能从主部件进入selectedOption吗?请帮助。

请注意,我想在辛烷版本中实现这一点。

要做到这一点,唯一的方法是从父类传递一个引用给子类,并让子类调用父类的一些函数(因为,在呈现中,默认情况下数据只向下流动("数据向下,动作/函数向上"))

的例子:

class Parent {
foo(child) {
// do something with the child
}
}
<Child @foo={{this.foo}} />
// ------------------
class Child { }
{{ (@foo this) }}

注意,这是一个"效果",而效果通常是一种代码气味(应该尽可能使用派生数据)

最新更新