找回密码
 立即注册

QQ登录

只需一步,快速开始

lynn8588

金牌服务用户

40

主题

161

帖子

415

积分

金牌服务用户

积分
415
lynn8588
金牌服务用户   /  发表于:2023-3-4 14:13  /   查看:1913  /  回复:8
1金币
想请教一下,是否能获取到当前页面公式编辑器弹窗是打开还是关闭的?我们想根据弹窗的状态做一些其他操作,谢谢

最佳答案

查看完整内容

这个目前没有办法获取到,只有部分的command有getState,比如你另一个帖子中看到的templateDesignMode数据绑定模板对话框 简单来说,你看到的数据绑定模板对话框对话框,通过excute是切换显示状态。所以能getState获取到是否显示 但是insertFunction命令是单向的。每次执行都是打开一个新的dialog,并不控制关闭,自然没法获取到当前的状态

8 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-4 14:13:26
来自 3#
这个目前没有办法获取到,只有部分的command有getState,比如你另一个帖子中看到的templateDesignMode数据绑定模板对话框

简单来说,你看到的数据绑定模板对话框对话框,通过excute是切换显示状态。所以能getState获取到是否显示

但是insertFunction命令是单向的。每次执行都是打开一个新的dialog,并不控制关闭,自然没法获取到当前的状态
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-3-4 16:05:50
2#
我查了一些相关资料,getState()可以获取到,但是InsertFunction这个命令没有getState方法,于是使用designer.getData("")方法获取,但是同样获取不到,麻烦解答一下应该怎么使用
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-3-7 10:33:12
4#
那能通过什么方法监听到我点了insertFunction这个工具button么?
image.png204054259.png
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-3-7 10:34:26
6#
我也发现,其实顶部desinger工具栏里的操作命令,不是所有的点击都能通过spread.commandManager().addListener('', function (config) {});监听到,为什么呢?
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-3-7 14:41:58
7#
我看了你们很多帖子,我这种是否可以通过重写一下insertFunction来实现一些干预操作?如果可以你们能提供一个demo么?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-7 18:35:35
8#
本帖最后由 Richard.Ma 于 2023-3-7 18:37 编辑

是的 ,您可以重写insertFunction,这样你相当于可以监听到打开公式对话框的事件
以及在原有的逻辑前后执行一些自己的代码
可以参考这个文章

https://gcdn.grapecity.com.cn/fo ... 5&fromuid=31720


但是还是如上面所说,没有办法判断对话框是否关闭,这个只能判断打开
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-3-14 09:49:07
9#
现在对话框的打开操作已经捕捉到了,有没有办法监听到InsertFunction弹窗上的取消或者关闭按钮事件?我试了目前只能通过AddListener监听到最后公式编辑完成时点击【确定】按钮的事件,弹窗里的其他按钮事件,比如【取消】,比如还在编辑过程中的【确定】,都监听不到
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-14 11:42:12
10#
是的,目前没有办法做到。

另外,如果你是要单纯的判断当前是否有弹出对话框(不一定是公式对话框)可以通过查询dom来确认,但是这个也没有办法在关闭时触发
  1. document.getElementsByClassName("gc-sjs-designer-dialog")
复制代码

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