发布时间:2026/8/28 23:31:09
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/8/28 23:31:09

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/8/29 0:26:35

2026年AE图表动画怎么做:图表编辑器与数据绑定的用法

做财经解说视频,图表动画有三条可行路径:AE图表编辑器+表达式绑定CSV/JSON适合已用AE剪片、需要包装质感的人;纯代码渲染(Matplotlib/Manim/Plotly/ECharts)适合数据更新频繁、希望脚本维护的人&#xff1b…

2026/8/29 0:26:35

2026年瀑布图制作详细步骤:利润拆解与业绩归因的画法

2026年做瀑布图动画有三条路线:Excel内置瀑布图做静态拆解;Plotly的waterfall模块生成交互式图表;Matplotlib或Manim渲染成帧序列。不想写代码可把文案和数据交给花生AI,走代码渲染式MG动画生成。本文重点写后两条可复现路线。 一…

2026/8/29 0:26:35

土壤侵蚀预测:从线性回归到多项式拟合的非线性建模实战

1. 从“拍脑袋”到“算出来”:为什么土壤侵蚀预测需要非线性模型干过水土保持、生态修复或者土地规划的朋友,肯定都遇到过这个头疼事:拿到一个区域的遥感数据、地形图、土壤样本,领导或者甲方问,这块地未来几年的土壤侵…

2026/8/29 0:26:35

大模型应用开发实战:从 Prompt 工程到 RAG、Agent 与 MCP 的完整指南

这里写自定义目录标题欢迎使用Markdown编辑器一、为什么这四个技术点必须一起学二、Prompt 工程:与大模型沟通的艺术2.1 Prompt 的核心要素2.2 进阶 Prompt 示例生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

2026/8/29 0:26:35

多 Agent 系统的设计哲学:从单智能体到群体智能

这里写自定义目录标题欢迎使用Markdown编辑器一、先纠偏:Multi-Agent 不是"群聊",而是"协作操作系统"二、多 Agent 系统的六层架构三、单 Agent 的局限与多 Agent 的价值四、多 Agent 的两种协作模式4.1 层级模式(Hierar…

2026/8/29 0:16:11

OpenAI API 工程化接入指南:从认证到安全加固的完整实践

在接入 OpenAI API 的实际项目中,真正影响交付质量的往往不是模型回答是否准确,而是认证配置、密钥管理、超时处理、错误分支和日志脱敏这些细节是否被认真对待。OpenAI 的接口从调用角度看并不复杂,一条 HTTP 请求就可以完成文本或图像的推理…

2026/8/28 16:16:17

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 16:16:21

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 16:16:22

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/29 0:01:10

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:01:10

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:01:10

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…