Web 组件元素单击事件侦听器不工作
Web component element click event listener not working
我正在创建一个简单的剪刀石头布游戏。
我决定不使用任何框架,所以我完全使用 Web Components JavaScript。
我几乎完成了所有我想做的事情,但是有一个组件 (ResultDisplay) 由于某些原因点击事件在 replay[=33 上不起作用=] 和 重置 按钮。
这很奇怪,因为我在它附近有一个非常相似的组件 (StartCounter),它有一个按钮点击侦听器,它在那里工作得很好!
我不明白我错过了什么...
_initEventListeners() {
// This is always called.
this.replayButton.addEventListener('click', this._onReplayClick.bind(this));
this.resetButton.addEventListener('click', this._onResetClick.bind(this));
}
_onReplayClick() {
// This is never called when I'm clicking on the button.
this.triggerEvent('replay');
}
我不能把整个代码都放在这里,那样太难读了。
但你可以全部找到 here,甚至可以用 npm run dev
自己测试
非常感谢任何想法。
在您的代码中,您将事件侦听器添加到初始 <result-display>
内容中的按钮。
然而,当你想显示第一场比赛的结果时,你再次调用createTemplate()
,它会在shadowRoot
中重新创建一个新的DOM,带有新的按钮,没有附加到它们的事件侦听器。
然后您应该再次致电 _initEvenListeners()
。
我正在创建一个简单的剪刀石头布游戏。
我决定不使用任何框架,所以我完全使用 Web Components JavaScript。
我几乎完成了所有我想做的事情,但是有一个组件 (ResultDisplay) 由于某些原因点击事件在 replay[=33 上不起作用=] 和 重置 按钮。
这很奇怪,因为我在它附近有一个非常相似的组件 (StartCounter),它有一个按钮点击侦听器,它在那里工作得很好!
我不明白我错过了什么...
_initEventListeners() {
// This is always called.
this.replayButton.addEventListener('click', this._onReplayClick.bind(this));
this.resetButton.addEventListener('click', this._onResetClick.bind(this));
}
_onReplayClick() {
// This is never called when I'm clicking on the button.
this.triggerEvent('replay');
}
我不能把整个代码都放在这里,那样太难读了。
但你可以全部找到 here,甚至可以用 npm run dev
非常感谢任何想法。
在您的代码中,您将事件侦听器添加到初始 <result-display>
内容中的按钮。
然而,当你想显示第一场比赛的结果时,你再次调用createTemplate()
,它会在shadowRoot
中重新创建一个新的DOM,带有新的按钮,没有附加到它们的事件侦听器。
然后您应该再次致电 _initEvenListeners()
。