请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

bingocc

注册会员

9

主题

28

帖子

83

积分

注册会员

积分
83

微信认证勋章

[已处理] 看看是不是bug?

bingocc
注册会员   /  发表于:2017-10-19 11:20  /   查看:4066  /  回复:5
两个spread表格,第spread1事件触发时,调用spread2的方法,此时spread1的事件又被调用了一次
代码见附件

focusfalse.html

1.56 KB, 下载次数: 125

5 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-19 17:06:57
沙发
您好:
上面问题可以通过
sheet1.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) {
                        console.log(args)
                        setTimeout(function(){
                                sheet2.clearSelection();
                        },10);
        });来解决。
您的具体需求是什么呢?如果是想要在上面获取焦点时清除下面的焦点,您可以将两个spread都设置
spread.options.hideSelection = true
回复 使用道具 举报
bingocc
注册会员   /  发表于:2017-10-19 18:14:07
板凳
ClarkPan 发表于 2017-10-19 17:06
您好:
上面问题可以通过
sheet1.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) {

这是我抽出来的例子,实际的问题是使用sheet1调用sheet2的clearSelection()的时候,他会调用sheet1的事件,导致了我事件内部的逻辑代码重复执行(就因为这一次调用导致了死循环)
1.你的意思是spread.options.hideSelection = true可以替代clearSelection()方法使用?
2.sheet2执行clearSelection()方法时,回来调用sheet1的事件,这明显是不对的。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-20 09:55:35
地板
对,如果您的需求跟我之前所猜测的相符,您是需要使用spread.options.hideSelection = true 而不是clearsSelection();
使用spread.options.hideSelection = true 也就不会出现第二个问题
我将您的demo改了一下,您看一下是不是您要的效果

focusfalse.html

1.43 KB, 下载次数: 128

回复 使用道具 举报
bingocc
注册会员   /  发表于:2017-10-24 09:48:51
5#
ClarkPan 发表于 2017-10-20 09:55
对,如果您的需求跟我之前所猜测的相符,您是需要使用spread.options.hideSelection = true 而不是clearsSe ...

我已经从其他方面解决了这个问题,但是我觉得这是一个bug,并没有从根本上解决,两个独立的模块进行单向的调用,函数完成后不应该再回调该方法本身。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-24 11:02:19
6#
您好,您的问题我们已经收到,我们会向相关部门进行反馈,如果这个问题是BUG,我们会进行处理,等有修复后我们会第一时间通知您下载修复版本。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部