因此,我正在映射一组对象,并希望在选择单选按钮时显示在页面上。例如,如果数组中有两个对象,则将有两个单选按钮。如果你按下radio1,它应该呈现form1。如果按radio2,它应该隐藏form1并显示form2。
我创建了一个名为 formIndex 的属性来跟踪正在按下哪个按钮,以便我知道要调用哪个表单,但我在实现时遇到了麻烦。
当前行为:在页面加载时,两个无线电都出现,但尚未呈现数据。当我按下radio1 时,它同时显示form1 和form2。当我按下radio2 时,它同时显示form1 和form2。
我在 TypeScript 文件中使用 LitElement。
这是我创建的属性。由于我通过从 0 开始的数组进行映射,因此我将此属性初始化为 -1:
@state()
formIndex: number = -1;
这是我渲染表格的地方:
protected renderMultipleForms(formConfig: any): TemplateResult {
return html`
${formConfig?.formHeading ? html`<h3>${formConfig.formHeading}</h3>` : ''}
${formConfig.forms?.map((data: any) => html`
<!-- <adc-radio-group>
<adc-radio-button id="radioBtn" label=${data.label} @click="${this.handleClick}"></adc-radio-button>
</adc-radio-group> -->
<!-- RADIOS -->
<input type="radio" id=${data.label} name="paymentRadios" @click="${this.handleClick}">${data.label} <br />
<!-- RENDERING FORMS -->
<p id=${this.formIndex}>${this.formIndex > -1 ? this.renderForm(data.form, data.paymentIcons) : ''}</p>
`)}
`;
}
最后,这是处理收音机点击的方法:
protected handleClick(e: any){
if(e.target.id == this._data.forms[0].label){
this.formIndex = 0
} else if(e.target.id == this._data.forms[1].label) {
this.formIndex = 1
}
console.log(this.formIndex);
}
如何使它在单击第一个单选时仅显示第一个表单而单击第二个单选时仅显示第二个表单的位置?谢谢!