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

Carbon Components Svelte DataTable的click:row--select事件集成问题

解决Carbon Components Svelte DataTable的click:row--select事件绑定问题

你之前用addEventListener的方式不对,Svelte组件的自定义事件需要用Svelte自带的on:指令绑定到组件上,而且事件数据存在CustomEvent的detail属性里,不是直接在事件对象上。

正确的集成步骤:

  • 在DataTable组件标签上直接绑定on:click:row--select事件,不用手动调用addEventListener
  • 处理函数里通过e.detail获取事件参数(selected和row)

完整示例代码:

<script>
  import { DataTable } from "carbon-components-svelte";

  // 假设你的数据结构
  const rows = [
    { id: 1, name: "示例行1" },
    { id: 2, name: "示例行2" }
  ];

  function handleSelect(e) {
    // 从detail里获取选中状态和行数据
    const { selected, row } = e.detail;
    console.log("选中状态:", selected);
    console.log("选中的行:", row);
    // 这里可以写你的业务逻辑,比如处理模态框(你之前写的e.Modal应该是笔误?)
  }
</script>

<DataTable
  rows={rows}
  on:click:row--select={handleSelect}
>
  <!-- 这里定义你的列配置 -->
</DataTable>

为什么之前的方法不生效:

  1. addEventListener是用于绑定原生DOM事件的,而Carbon Components Svelte的click:row--select是组件自定义事件,需要通过Svelte的on:指令绑定
  2. 自定义事件的参数会被包裹在CustomEvent的detail属性中,所以不能直接访问e.selected,必须用e.detail.selected

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:37:01