找回密码
 立即注册

QQ登录

只需一步,快速开始

TY呀TY

中级会员

72

主题

193

帖子

647

积分

中级会员

积分
647

[已处理] 协同撤销

TY呀TY
中级会员   /  发表于:2023-6-17 16:50  /   查看:2328  /  回复:8
image.png639414977.png image.png211123961.png 简单来说就是有什么方案能够进行撤销

8 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-19 18:24:32
沙发
您好,
从描述中这边没太理解您的需求,能否结合一个具体的示例描述下呢,
需要先理解问题才能进一步调研相应方案。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-19 19:44:28
板凳
本帖最后由 TY呀TY 于 2023-6-19 19:46 编辑
Lynn.Dou 发表于 2023-6-19 18:24
您好,
从描述中这边没太理解您的需求,能否结合一个具体的示例描述下呢,
需要先理解问题才能进一步调研 ...

image.png897187194.png image.png609414062.png 简单来说就是 changeSheet1, fromRange,fromSheet等实例对象经过JSON.parse之后变成JSON,丢失了部分信息和原型链,但是这些可以通过目前api中的一些对应的构造函数重新new出来然后将数据fromJSON进去,比如fromRange经过序列化后会变成一个普通对象,然后可以通过相应的new GC.Spread.Sheets.Range()创建相应的实例对象,同时跟fromRange没有经过序列化是同一个构造函数

但是没有发现 cachedActions这个里面的对象实例对应的是什么,所以当直接放入撤销栈中执行就不能够撤销成功

我发现你们这个只要找到对应的实例对象并转换回去,基本命令都可以成功执行与撤销的
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-20 18:06:44
地板
SpreadJS是通过提供 public API来实现一些需求的,
您提到的”实例对象经过JSON.parse 再重新fromJSON“方式并不是SpreadJS建议的用法,
其中出现的”一些信息丢失问题“涉及到了底层源码的实现,我们也无法提供具体的解决方案。
事实上,我们更希望您描述清楚业务需求,这边调研是否可通过公开的API来实现。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-21 10:31:49
5#
Lynn.Dou 发表于 2023-6-20 18:06
SpreadJS是通过提供 public API来实现一些需求的,
您提到的”实例对象经过JSON.parse 再重新fromJSON“方 ...

但是协同通过socket将command命令转发个其他用户,中间肯定经过JSON转换,你说不建议,那如何进行传递呢?,业务需求就是协同撤销粘贴
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-21 18:23:26
6#
您提供一个具体的示例demo来详细说明下您的需求,这样才能针对性的调研相应方案。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-25 16:17:19
7#
Lynn.Dou 发表于 2023-6-21 18:23
您提供一个具体的示例demo来详细说明下您的需求,这样才能针对性的调研相应方案。

image.png866612243.png

commandManager.zip

1.27 KB, 下载次数: 185

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-25 18:50:15
8#
demo收到,这边先调研下此问题,有进展贴中通知您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-9-13 15:18:43
9#
基于前面提供信息,了解到您是想咨询对于复制粘贴操作如何进行协同撤销。在您提供demo基础上进行了更新,实现了粘贴撤销的效果,具体代码如附件。

commandManager_updated (1).html

2.78 KB, 下载次数: 109

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部