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

如何为Skeleton的SlideToggle组件添加变更事件监听器?

解决Skeleton SlideToggle组件的变更事件监听问题

首先纠正你代码里的一处小问题:你绑定的变量是is_monitoring,但定义的变量是is_checked,两者名称不一致会导致双向绑定失效,需要保持统一。

针对获取变更事件的需求,有两种简洁的实现方式:

方式一:监听组件的change事件

Skeleton的SlideToggle组件基于原生<input type="checkbox">封装,支持标准的change事件,你可以直接在组件上绑定事件处理函数:

<script lang="ts">
    import { SlideToggle } from '@brainandbones/skeleton';
    let is_checked: boolean = false;

    // 处理切换变更事件
    function handleToggleChange(e: Event) {
        const inputElement = e.target as HTMLInputElement;
        is_checked = inputElement.checked;
        // 在这里编写状态变更后的业务逻辑
        console.log('当前切换状态:', is_checked);
    }
</script>

<div class="page-container">
    <SlideToggle checked={is_checked} on:change={handleToggleChange}>
        {is_checked ? 'Activated' : 'Disabled'}
    </SlideToggle>
</div>

方式二:使用Svelte的反应式语句

利用Svelte的$:反应式声明,当is_checked状态变化时自动执行对应逻辑,无需手动监听事件:

<script lang="ts">
    import { SlideToggle } from '@brainandbones/skeleton';
    let is_checked: boolean = false;

    // 当is_checked值变化时自动触发
    $: {
        console.log('当前切换状态:', is_checked);
        // 在这里编写状态变更后的业务逻辑
    }
</script>

<div class="page-container">
    <SlideToggle bind:checked={is_checked}>
        {is_checked ? 'Activated' : 'Disabled'}
    </SlideToggle>
</div>

两种方式都能避免手动轮询状态,推荐根据你的业务场景选择:如果需要直接操作事件对象,用第一种方式;如果只关注状态值变化,第二种更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:40:42