【发布时间】:2023-03-27 15:02:01
【问题描述】:
我正在尝试使用 StencilJS 创建一个通用滑块组件。我的想法是将滑块 ID 作为道具传递,然后在滑块更改时使用道具作为事件名称。
问题是监听器没有捕捉到使用道具名称发出的动态事件。我认为这可能与组件生命周期有关,但我不确定。有什么想法吗?
export class ParentComponent{
@Listen('slider_A')
onSliderValueChangeA(){
console.log('event A') //not logging on slider change
}
@Listen('slider_B')
onSliderValueChangeB(){
console.log('event B') //not logging on slider change
}
@Listen('slider_C')
onSliderValueChangeC(){
console.log('event C')//not logging on slider change
}
render(){
return (
<div class='container'>
<slider-input slider_id={'slider_A'} slider_title={'S1'} ></slider-input>
<slider-input slider_id={'slider_B'} slider_title={'S2'} ></slider-input>
<slider-input slider_id={'slider_C'} slider_title={'S3'} ></slider-input>
</div>
);
}
}
Here is the slider component...
@Component({
tag: 'slider-input',
styleUrl: 'slider-input.scss',
shadow: true
})
export class Slider{
@Prop() slider_id: string;
@Event({
eventName: this.slider_id,
}) on_slider_value_change: EventEmitter<null>;
onValueChange(change){
this.slider_value = change.value;
this.on_slider_value_change.emit()
}
.
.
.
【问题讨论】:
标签: typescript events dynamic stenciljs listen