AlpineJS无法响应原生HTML onended事件问题求助
问题原因及解决办法
- 问题根源:原生
onended事件的回调运行在全局/元素自身作用域,无法直接访问AlpineJS组件内部的show变量——你写的show=false里的show是全局变量,和x-data里定义的不是同一个。 - 推荐解决方案:用AlpineJS的
@ended(即x-on:ended)指令绑定事件,这样回调会在组件作用域内执行,能直接访问show变量:
<div x-data="{show: true}"> <video src="..." @ended="show=false"></video> </div>
- 备选方案(不推荐):如果非要用原生事件,可通过Alpine内部的组件实例访问变量,但依赖内部属性存在兼容性风险:
<div x-data="{show: true}" id="video-wrap"> <video src="..." onended="document.getElementById('video-wrap').__x.$data.show=false"></video> </div>
内容的提问来源于stack exchange,提问作者TheBigK
相关产品推荐
相关产品推荐

