多图联动
同步协议传递视口中心日期,而不是复制像素滚动值,因此不同宽度和不同数据范围的图表仍能对齐同一时间。sync 支持 none、scroll、view、all。
| 模式 | 同步时间锚点 | 同步时间维度 | 适用场景 |
|---|---|---|---|
none | 否 | 否 | 多个图表完全独立 |
scroll | 是 | 否 | 对照不同粒度但保持同一日期 |
view | 否 | 是 | 统一维度,各自浏览不同日期 |
all | 是 | 是 | 主从视图或上下分区实时联动 |
只有相同联动组中的实例会互相广播。同步消息携带来源标识,接收端更新时不会再次回环发送。
Vue
vue
<YgGantt group-id="release-plan" sync="all" :tasks="productTasks" />
<YgGantt group-id="release-plan" sync="all" :tasks="launchTasks" />将 sync 改为 none 后,每个实例保留自己的视图、范围和滚动位置:
vue
<YgGantt group-id="release-plan" sync="none" :tasks="productTasks" />React
tsx
<YgGantt groupId="release-plan" sync="all" tasks={productTasks} />
<YgGantt groupId="release-plan" sync="all" tasks={launchTasks} />React 在原生滚动事件中发布日期锚点,接收端直接更新滚动位置,不等待下一次 React 渲染。
Flutter
Flutter 通过共享 YgGanttLinkGroup 联动:
dart
final group = YgGanttLinkGroup();
YotsubaGantt(
tasks: productTasks,
linkGroup: group,
syncMode: YgSyncMode.all,
)
YotsubaGantt(
tasks: launchTasks,
linkGroup: group,
syncMode: YgSyncMode.all,
)不传联动组时,Flutter 实例同样完全独立。共享组释放前应随页面生命周期销毁,避免宿主持有已经卸载的控制器。
