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>
为什么之前的方法不生效:
addEventListener是用于绑定原生DOM事件的,而Carbon Components Svelte的click:row--select是组件自定义事件,需要通过Svelte的on:指令绑定- 自定义事件的参数会被包裹在
CustomEvent的detail属性中,所以不能直接访问e.selected,必须用e.detail.selected
内容的提问来源于stack exchange,提问作者Meng
相关产品推荐
相关产品推荐

