我有一个在循环中创建的Ember组件。我传递一个带参数的函数。子函数需要传递另一个参数才能工作。我如何做到这一点?
前任:
Parent:
<div>
{{#each items as |item index|}}
<Child
@onButton1Click={{fn this.doStuff index}} // need index to do stuff
/>
{{/each}}
</div>
Child:
<div>
<ColorSelector @onColorChange={{this.changeColor}}/>
<Button @onClick={{this.onButton1ClickAction}} />
</div>
b1a1a
// Child.js
@tracked
color = 'blue';
@action
changeColor(passedColor) {
this.color = passedColor; // some hex value
}
@action
onButton1ClickAction() {
this.args.onButton1Click?.(this.color);
// how do I pass back color
}
问题是,如何使用子级的传递颜色并维护父级的索引?目前只看到索引。
2条答案
按热度按时间qfe3c7zg1#
看起来像
应该是
和
应该是
(注意
@
)如果没有e1d1e,
onButton1Click
将被解释为html属性,该属性将应用于...attributes
(如果存在)中的Child
元素,否则onButton1Click
不会做任何事情。相关文档:https://guides.emberjs.com/release/components/component-arguments-and-html-attributes/
yhqotfr82#
我认为您必须从子级执行父函数