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

Laravel Splade复选框@change事件失效,如何触发脚本?

问题:Splade复选框@change事件调用函数未生效

点击复选框时想触发提示框测试脚本,但功能未生效,相关代码如下:

<x-splade-form :default="[
    'allocated' => 0,
    'amount' => 100,
    'allocateme' => 0,
]">

    <x-splade-input label="Amount" name="amount" v-model="form.amount" />
    <x-splade-input label="Allocated" name="allocated" v-model="form.allocated" />
    <x-splade-input disabled label="Total" name="total" />
    <x-splade-checkbox @change="shout" label="Allocate this amount" name="allocateme" v-model="form.allocateme" value="1" />

</x-splade-form>

<x-splade-script>
    function shout() {
    alert('Checkbox was checked');
    }
</x-splade-script>

错误原因

你直接在<x-splade-script>里定义了普通函数shout,但模板中的@change="shout"无法找到这个函数——因为Splade的模板作用域绑定的是Vue组件的实例方法,而非全局函数。

解决方法

需要将函数注册为Vue组件的实例方法,有两种常用方式:

方式1:选项式API(Options API)

修改<x-splade-script>内容,导出包含methods的组件对象:

<x-splade-script>
    export default {
        methods: {
            shout() {
                alert('Checkbox was checked');
            }
        }
    }
</x-splade-script>

方式2:组合式API(Composition API)

使用defineComponent和setup函数返回需要暴露的方法:

<x-splade-script>
    import { defineComponent } from 'vue';

    export default defineComponent({
        setup() {
            const shout = () => {
                alert('Checkbox was checked');
            };

            return { shout };
        }
    });
</x-splade-script>

这样修改后,点击复选框时就能正常触发提示框了。后续你可以在shout函数里添加更新输入框的逻辑。

内容的提问来源于stack exchange,提问作者Kal-El

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:03:24