svelte-gantt实例API完全参考:selectTask、scrollToTask、updateTask等方法怎么用

发布时间:2026/10/31 8:41:40

svelte-gantt实例API完全参考:selectTask、scrollToTask、updateTask等方法怎么用 svelte-gantt实例API完全参考selectTask、scrollToTask、updateTask等方法怎么用【免费下载链接】svelte-gantt:calendar: Interactive JavaScript Gantt chart/resource booking component项目地址: https://gitcode.com/gh_mirrors/sv/svelte-gantt在 Svelte 项目中使用 svelte-gantt 这个交互式甘特图/资源预约组件时创建实例后最常打交道的就是实例 API用selectTask程序化选中任务、scrollToTask快速滚动定位、updateTask动态新增或修改任务。本文面向新手把 svelte-gantt 实例上的常用方法与事件 API 一次讲清楚并附上来源文件位置方便按需查阅。一、创建 svelte-gantt 实例拿好你的 API 入口所有实例方法都挂在new SvelteGantt(...)返回的组件实例上。初始化只需两步传入props行、任务、时间范围等数据保存实例引用import { SvelteGantt, SvelteGanttTable, SvelteGanttDependencies } from svelte-gantt; const gantt new SvelteGantt({ target: document.getElementById(example-gantt), props: { rows: rows, tasks: tasks, from: startOfToday, to: endOfToday, ganttTableModules: [SvelteGanttTable], ganttBodyModules: [SvelteGanttDependencies] } });拿到实例后你会发现三样东西实例方法gantt.selectTask(...)、gantt.updateTask(...)等本文主角gantt.api事件对象如gantt.api.tasks.on.select(handler)gantt.$set(options)整体更新图表选项时间范围、列宽等配置项。实例方法的实现集中在组件主文件packages/svelte-gantt/src/Gantt.svelte完整方法签名类型定义在packages/svelte-gantt/src/gantt.ts事件体系在packages/svelte-gantt/src/core/api.ts。二、选中与取消选中selectTask / unselectTasksgantt.selectTask(3); // 按 id 选中任务 3 gantt.unselectTasks(); // 清空所有选中两个细节值得知道选中是排他的selectTask内部会先取消已有选中再选中目标任务逻辑见packages/svelte-gantt/src/core/selectionManager.ts手动点击也走同一套选中状态鼠标单击任务为单选按住 Ctrl 单击可切换多选。因此程序选中后用户点击其他任务选中态会被正常接管不会打架。典型场景列表页点击任务名称 → 甘特图自动高亮对应任务。三、滚动定位scrollToTask / scrollToRowgantt.scrollToTask(3, smooth); // 平滑滚动到任务 3 gantt.scrollToTask(7); // 默认 auto瞬间到位 gantt.scrollToRow(2, smooth); // 滚动到某一行这两个方法的滚动行为是只在不可见时才滚动任务已在视野内 → 不滚动不打扰用户任务在视野上方/左侧 → 滚动到刚好露出顶部/左缘任务在视野下方/右侧 → 滚动到刚好露出底部/右缘。scrollBehavior参数支持标准的auto或smooth第二个参数可以省略。实现位于packages/svelte-gantt/src/Gantt.svelte的scrollToTask函数可直接阅读其滚动判定逻辑。四、增删改数据updateTask、updateRow、removeTask这是实例 API 中用得最多的一组。它们与初始化时传props不同不需要重建组件图表会自动增量刷新。updateTask / updateTasks新增或更新upsert 语义gantt.updateTask({ id: 5001, label: 任务 #5001, from: Date.now(), to: Date.now() 3 * 60 * 60 * 1000, resourceId: 1, classes: orange });id已存在 → 更新该任务改时间、改标签、改颜色都行id不存在 → 当作新任务插入。一个真实用例配合外部拖放模块SvelteGanttExternal把页面按钮拖进甘特图即可创建任务demo 中的写法见packages/demo/src/routes/external/page.svelteconst external new SvelteGanttExternal(document.getElementById(new-task), { gantt, onsuccess: (row, date, gantt) { gantt.updateTask({ id: id, label: Task #${id}, from: date, to: date 3 * 60 * 60 * 1000, resourceId: row.model.id }); } });updateTasks(models)是批量版一次提交TaskModel[]数组updateRow(model)/updateRows(models)同理用于动态修改行资源数据。removeTask / removeTasks删除任务gantt.removeTask(5001); // 删除单个 gantt.removeTasks([1, 2, 3]); // 批量删除删除后所在行会自动重新布局无需手动刷新。五、查询数据getTask / getRow / getTasks三个只读方法直接返回内部实体对象方便在事件回调或业务逻辑中取值const task gantt.getTask(3); // 返回 SvelteTask含 model、left、width 等 const row gantt.getRow(1); // 返回 SvelteRow const tasks gantt.getTasks(1); // 返回该行上的任务数组注意id 不存在时返回nullgetTasks同理使用前建议判空。六、事件 APIgantt.api.tasks.on 全解析在gantt.api上按命名空间组织了三组事件全部采用on.事件名(回调)的订阅方式回调同步执行gantt.api.tasks.on.select((task) console.log(选中了, task));tasks命名空间任务交互| 事件 | 回调参数 | 触发时机 | | - | - | - | |move|task| 任务拖拽移动过程中持续触发 | |resize|task| 任务拖拽改变大小过程中触发 | |select|task| 用户选中任务含selectTask触发的选中 | |switchRow|task, row, previousRow| 任务被拖到另一行 | |moveEnd|task| 拖拽结束 | |change|{ task, sourceRow, targetRow, previousState }| 拖放落定、数据更新前| |changed| 同上 | 拖放落定、数据更新后| |dblclicked|task, MouseEvent| 双击任务 |gantt.api.gantt命名空间图表视图viewChanged缩放等视图变化、dateSelected表头选中时间段回调参数{ from, to }。gantt.api.timeranges命名空间clicked、resized、changed对应用于时间区间条的交互。取消订阅on返回一个函数调用它即可移除监听适合在组件销毁时清理。官方 demo 的完整事件用法可参考packages/demo/src/routes/events/page.svelte。七、实例方法速查表| 方法 | 参数 | 作用 | | - | - | - | |selectTask(id)| 任务 id | 选中指定任务 | |unselectTasks()| 无 | 清空选中 | |scrollToTask(id, behavior?)| 任务 idauto|smooth| 滚动到任务 | |scrollToRow(id, behavior?)| 行 id | 滚动到行 | |updateTask(model)| 任务对象 | 新增或更新任务 | |updateTasks(models[])| 任务数组 | 批量新增/更新 | |updateRow(model)| 行对象 | 新增或更新行 | |updateRows(models[])| 行数组 | 批量新增/更新行 | |removeTask(id)| 任务 id | 删除任务 | |removeTasks(ids[])| 任务 id 数组 | 批量删除任务 | |getTask(id)/getRow(id)| id | 获取任务 / 行实体 | |getTasks(rowId)| 行 id | 获取行上全部任务 |八、新手常见疑问Q1updateTask和gantt.$set({ tasks: [...] })有什么区别$set是整体替换选项通常用于改时间范围、列宽等配置updateTask是任务级增量操作只刷新受影响的任务和行大数据集下性能更好。增删改单个任务请优先用实例方法。Q2scrollToTask没有滚动目标任务已经在可视区域内时方法会故意不滚动。想要每次都强制居中的效果需要自己操作gantt.getMainContainer()之外的 DOM或改用$set调整from/to。Q3selectTask没反应传入的 id 必须在当前已加载的任务中存在方法内部查不到会静默跳过见Gantt.svelte中selectTask的判断。先用getTask(id)确认 id 正确。Q4拖拽完成后如何保存最新数据监听changed事件此时任务的from/to/resourceId已更新完毕直接把task.model同步到后端即可若需要在保存前校验或拦截则用change事件。掌握了以上方法svelte-gantt 实例 API 的日常使用场景基本全覆盖选中联动、滚动定位、动态增删改、事件监听都能在几行代码内完成。【免费下载链接】svelte-gantt:calendar: Interactive JavaScript Gantt chart/resource booking component项目地址: https://gitcode.com/gh_mirrors/sv/svelte-gantt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/25 16:52:14

ECC使用指南:两条命令装进Claude Code的AI代码审查工作流

ECC使用指南:两条命令装进Claude Code的AI代码审查工作流 【免费下载链接】ECC The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.…

2026/10/31 8:38:42

1000-1099题号段AC代码包:判题机制与输入输出避坑

简介:杭州电子科技大学在线OJ 1000~1099题解代码包,面向正在刷题、准备竞赛或系统学习C/C算法的编程学习者,集中提供该题号区间内题目的可运行实现,帮助对照题目理解算法思路并完成查漏补缺。编号跨度从1000到1099&…

2026/10/31 8:38:42

智能代理(Agent)开发指南:从原理到实践

1. 什么是Agent?从概念到实践的全景解析 Agent(智能代理)这个概念在计算机科学领域已经存在了数十年,但直到最近AI技术的爆发式发展,它才真正从学术论文走向工程实践。简单来说,一个Agent就是一个能够感知环…

2026/10/31 8:38:42

Claude Code设计哲学:CLI、Agent与MCP如何重塑LLM应用开发

1. 从一条命令行说起:Claude Code 到底在解决什么问题第一次接触 Claude Code 的人,十有八九会愣一下:这不就是个终端里跑的命令行工具吗,跟那些带漂亮界面的 AI 编程助手比,它凭什么值得单独拿出来聊设计理念&#xf…

2026/10/31 8:38:42

人形机器人安全控制与异常检测:RAPT方法工程实践解析

人形机器人这两年从实验室一路走到公众视野,能跑能跳能搬箱子,演示视频一个比一个炸裂。但真正在一线做过整机调试的人都清楚,让机器人动起来是一回事,让它动得安全、动得可控、出了岔子还能自己察觉,完全是另一回事。…

2026/10/31 8:38:42

基于SVM的同轴输电线路电磁故障检测方法研究

1. 项目背景与核心价值同轴输电线路作为电力系统中的关键组成部分,其运行稳定性直接影响整个电网的可靠性。电磁故障检测技术通过分析线路中的电磁信号特征,能够快速识别开放、短路和阻抗不匹配等典型故障类型。传统检测方法往往依赖于阈值判断或人工经验…

2026/10/31 8:33:42

Pi-Agent与LangChain选型指南:企业级Agent框架如何评估

最近后台被问爆的问题:Pi-Agent 和 LangChain 到底该选哪个?其实这个问题本身就踩了选型误区的坑。两者根本不是一个定位的框架——LangChain 是一套面向大模型应用开发的通用工具链,Pi-Agent 则更接近一个强调可控、可审计、带人工审批环节的…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑