【发布时间】:2020-03-04 09:38:19
【问题描述】:
我正在创建一个工具栏,将用于文本编辑。
工具栏中的每个项目都是使用以下代码创建的:
import {Component, h, Prop, Event, EventEmitter} from '@stencil/core';
@Component({
tag: 'spa-toolbar-item',
styleUrl: 'spa-toolbar-item.scss',
})
export class spaToolbarItem {
@Prop({reflectToAttr: true, mutable: true}) toggle: boolean = false;
@Prop({reflectToAttr: true}) type: string;
@Event() onToggle: EventEmitter;
toggleComponent(): void {
this.toggle = !this.toggle;
this.onToggle.emit({visible: this.toggle});
}
render() {
return [
<button onClick={() => this.toggleComponent()}>
<slot/>
</button>,
<div class={this.toggle ? 'is-active' : null}>
{this.type == 'font'
? <div class={this.type}>
<span class="arial">Arial</span>
<span class="georgia">Georgia</span>
<span class="palatino">Palatino</span>
<span class="tahoma">Tahoma</span>
<span class="times">Times New Roman</span>
<span class="helvetica">Helvetica</span>
<span class="courier">Courier New</span>
<span class="lucida">Lucida Sans Typewriter</span>
<span class="verdana">Verdana</span>
</div>
: null}
</div>
]
}
}
这按预期工作,但是,我希望在单击一项时关闭所有其他下拉菜单,因此基本上需要将“this.toggle”应用于所有非活动下拉菜单。我该怎么做?
【问题讨论】:
标签: javascript typescript stenciljs tsx