找回密码
 立即注册

QQ登录

只需一步,快速开始

jiqimao 讲师达人认证
金牌服务用户   /  发表于:2018-5-31 00:13  /   查看:3863  /  回复:6
如题

6 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-5-31 11:38:47
沙发
这个我看一下,前两天跟讨论时候说有个内部命令可以用,我这边需要学习一下,完了给您写一个demo
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-6-1 15:04:44
板凳
参考附件demo创建监听,然后将每一步的操作命令拿到后端存放在账户的堆栈中。然后将命令广播,协同端调用spread.commandManager().execute(cmd);执行命令来进行同步就可以了。

addListener.html

1.25 KB, 下载次数: 116

回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2018-6-5 19:46:43
地板
你给的demo里面还原的方式, 是会加到被还原用户的撤销堆栈里面的, 如何使用命令还原的时候, 不加到对方的堆栈里面呢 ? 之前你说的是canUndo, 但是, 你demo里面的command的对象里面是无法设置的 . 如果可以设置, 那么是怎么去设置的呢 ?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-6-6 10:09:18
5#
是啊,这就是之前跟您说的问题了命令是会被加入到堆栈池中的,而且目前没有account这样的概念,所以还原时候按照原来的规则出栈肯定还原的是对方的操作。这里就需要改动undomanager,在undomanager中加入账户的概念,并且出栈的时候按照账户来出栈(这样数据结构就不是栈了,可能还要改数据结构)或者也可以自己在服务器端维护堆栈池,这样需要完全重写undomanager.这都是源码级别的改动了。
另外,之前designer这边的无法同步问题是这样的,当初在线表格编辑器在设计时没有定位协同编辑这块,为了保证运行的效率用的是懒加载模式,举个例子,拿单元格背景色来说,默认该相关命令是没有被加载的,当在菜单中选择添加背景色后,再初始化相关的命令,所以咱们这边用addlicenser拿到命令后,还原时没有效果(因为懒加载没有加载相关命令,咱们之间去执行就没有用)。如果您要用在线表格编辑器完成协同的操作,那么就需要将懒加载模式改为初始化时候将相关命令一并加载。
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2018-6-13 16:13:22
6#
请问在线编辑器 如何 将命令的懒加载模式修改为初始化时候将相关命令一并加载 ? 需要在哪里修改 ?
回复 使用道具 举报
Helen
高级会员   /  发表于:2018-6-13 16:48:35
7#
jiqimao 发表于 2018-6-13 16:13
请问在线编辑器 如何 将命令的懒加载模式修改为初始化时候将相关命令一并加载 ? 需要在哪里修改 ?

命令懒加载的部分是在spreadActions.js文件中,里面有个runCommand方法。
如果不想懒加载,需要将spreadActions.js里面所有的command,在初始化时全部register到commandManager里面。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部