You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JavaScript调用AlpineJS函数?模态框控制实践

如何从原生JavaScript调用AlpineJS的函数?

我用AlpineJS实现了模态框的显示与隐藏功能,点击按钮时需要判断布尔值,若为true则关闭模态框,这需要和AlpineJS的数据交互。想请教能不能从原生JavaScript中调用AlpineJS的函数?

我尝试过的方法(未生效)

我尝试通过自定义事件实现,但没起作用,代码如下:

触发事件的JavaScript代码:

let event = new CustomEvent("closeModal", {}); window.dispatchEvent(event)

模态框的HTML设置:

<div x-show="isOpen()" @closeModal.window="close">
  <!-- 模态框内容 -->
</div>

最终实现方案(无需事件)

感谢pthomson的回答,我已经实现了功能,还找到了不需要事件的方法,代码示例如下:

HTML部分

<div x-data>
    <button type="button" @click="$store.modal.open()">Open Modal</button>
    <div x-show="$store.modal.isOpen()">
        <!-- 模态框内容 -->
    </div>
</div>

JavaScript部分

document.addEventListener('alpine:init', () => { 
    Alpine.store('modal', {
        show: false,
        isOpen() {
            return this.show;
        },
        open(){
            this.show = true;
        },
        close(){
            this.show = false;
        }
    })
})

// 原生JS中调用Alpine函数
function closeModal(){
    Alpine.store("modal").close();
}

内容的提问来源于stack exchange,提问作者Sebastian Mihali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:50:11