找回密码
 立即注册

QQ登录

只需一步,快速开始

郭泽晋
高级会员   /  发表于:2017-7-18 10:42:26
11#
ClarkPan 发表于 2017-7-18 10:27
您好,您能否提供一个能够重现您问题的demo,目前这样的情况属于不正常的,我们先来找问题的原因,解决问 ...

主要是这个东西我也重现不了  因为我们有的电脑撤销是好用的  有的电脑撤销是不好用的  所以我也一直找不到是什么导致的
回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-18 10:54:18
12#
ClarkPan 发表于 2017-7-18 10:27
您好,您能否提供一个能够重现您问题的demo,目前这样的情况属于不正常的,我们先来找问题的原因,解决问 ...

我好像查到问题了  
image.png412580260.png

我的代码是这么写的   同比公式(E1+D1-1)*100   判断如果E1和D1任意一个为空  那我就把公式清空  不做计算    所以导致撤销的时候无法做计算   
回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-18 11:03:52
13#
ClarkPan 发表于 2017-7-18 10:27
您好,您能否提供一个能够重现您问题的demo,目前这样的情况属于不正常的,我们先来找问题的原因,解决问 ...

demo.rar (2.39 MB, 下载次数: 75)
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-18 16:13:44
14#
您好,因为之前您清除公式是在代码层面完成的,所以是不会被undo,redo记录的,像这种情况您需要定义一个command来完成清除公式的逻辑,在command中设置canUndo为true,这样该操作就可以被撤销和恢复,也就不会出现您所描述的问题了,以下是demo,您可以进行参考

command.zip

1004 Bytes, 下载次数: 110

回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-20 10:00:22
15#
ClarkPan 发表于 2017-7-18 16:13
您好,因为之前您清除公式是在代码层面完成的,所以是不会被undo,redo记录的,像这种情况您需要定义一个com ...

image.png180669860.png

你好  你发的代码我没有看懂  你看一下我的代码  然后告诉我一下应该怎么写啊   咱俩的撤销恢复写法不一样啊
回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-20 15:39:24
16#
ClarkPan 发表于 2017-7-18 16:13
您好,因为之前您清除公式是在代码层面完成的,所以是不会被undo,redo记录的,像这种情况您需要定义一个com ...

你好  收到回复没有?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 17:08:08
17#
  1. var command = {
  2.                         。。。。
  3.                 };

  4. var commandManager = spread.commandManager();
  5.                         commandManager.register("cleanFormula", command);
复制代码


command 的声明和 注册,您是要定义到全局的,这个不是定义hander 里;

commandManager.execute 是执行command。

然后您按下 ctrl+ z 就可以撤销了
回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-21 09:17:47
18#
dexteryao 发表于 2017-7-20 17:08
command 的声明和 注册,您是要定义到全局的,这个不是定义hander 里;

commandManager.execute 是 ...

撤销用这个代码  那恢复的话是不是也用同样的代码 不需要改动?
回复 使用道具 举报
郭泽晋
高级会员   /  发表于:2017-7-21 09:24:58
19#
郭泽晋 发表于 2017-7-21 09:17
撤销用这个代码  那恢复的话是不是也用同样的代码 不需要改动?

image.png939847106.png
这个定义成全局变量

image.png571950683.png

撤销方法里改成这个


不知道版主写完测试了没有    这个是不行的  有bug   


还有就是我想问下到底有没有可以监测到这个撤销操作的事件   我想先把这个问题解决了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-21 11:44:50
20#
本帖最后由 ClarkPan 于 2017-7-21 11:46 编辑
郭泽晋 发表于 2017-7-21 09:24
这个定义成全局变量

您好,可能是我们没说清楚,让您的理解上出现了偏差,看了您的贴的代码,您应该是实现了一个撤销按钮,如果您撤销按钮的逻辑是用我们.undoManager().undo();去做的,那么您撤销按钮的逻辑是不用动的。同理恢复按钮的逻辑也是不用更改的,需要更改的是您cleanformula的操作,您只需将您cleanformula的操作改为我之前demo写的通过commandManager去执行就可以了,之前demo中写的逻辑就是在定义了一个commandManager去做cleanformula的操作,并使其能够被undo和redo,所以您不需要更改您undo,redo的逻辑只要更改cleanformula操作的逻辑即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部