找回密码
 立即注册

QQ登录

只需一步,快速开始

littleknife

高级会员

201

主题

460

帖子

1889

积分

高级会员

积分
1889
littleknife
高级会员   /  发表于:2024-6-27 19:53  /   查看:88  /  回复:8
1金币
本帖最后由 littleknife 于 2024-6-27 20:00 编辑

通过setRowHeight设置高度RowHeightChanged事件无法监听到,包括使用ColumnWidthChanged,还有ViewZoom也无法触发
我是用RowChanged可以监听到,但是ViewZoom这个就没办法了,这个有什么代替的?
顺便问一下,bind的事件在spread销毁之后会自动释放吗,需要在销毁的时候手动去unbind所有的事件吗

rowHeightChanged.zip

891 Bytes, 下载次数: 1

8 个回复

倒序浏览
eat_grape_5
初级会员   /  发表于:3 天前
沙发
本帖最后由 eat_grape_5 于 2024-6-28 10:52 编辑

关于destroy方法是否会释放绑定的事件,销毁动作执行后实例便不存在了,绑定的事件也就不存在了。
回复 使用道具 举报
eat_grape_5
初级会员   /  发表于:3 天前
板凳
RowHeightChanged和ColumnWidthChanged事件分别用于监听手动调整行高、列宽事件,而通过setRowHeight方法改变行高可在RowChanged事件中监听。同样地,ViewZoomed和ViewZooming也用于监听手动缩放事件。楼主是通过代码调用zoom方法设置缩放比例的吗?具体是什么需求呢?
回复 使用道具 举报
littleknife
高级会员   /  发表于:3 天前
地板
eat_grape_5 发表于 2024-6-28 11:27
RowHeightChanged和ColumnWidthChanged事件分别用于监听手动调整行高、列宽事件,而通过setRowHeight方法改 ...

是的,我是通过代码去调整高度与宽度。具体的需求是需要实现两个sheet页的联动。目前是手动去滚动拖拽都能实现。但是我们代码中有一些按钮。比如右键菜单是新增了一个menuVIew去设置行高列宽,设置行高列宽就是通过api去设置的,这种情况下rowHeightChanged就监听不到行高列宽的变化
回复 使用道具 举报
eat_grape_5
初级会员   /  发表于:3 天前
5#
littleknife 发表于 2024-6-28 11:58
是的,我是通过代码去调整高度与宽度。具体的需求是需要实现两个sheet页的联动。目前是手动去滚动拖拽都 ...

通过API设置行高列宽,那就分别使用RowChanged、ColumnChanged事件监听行高列宽变化,再与相应的业务处理绑定即可。在楼主的代码中,对缩放也提供一个按钮,并且也需要监听缩放吗?那顺便问一下,如果监听到缩放后要执行的业务也是让另一个sheet页同步动作吗?
回复 使用道具 举报
littleknife
高级会员   /  发表于:3 天前
6#
eat_grape_5 发表于 2024-6-28 12:09
通过API设置行高列宽,那就分别使用RowChanged、ColumnChanged事件监听行高列宽变化,再与相应的业务处理 ...

是的,目的就是两个sheet页同步
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:3 天前
7#
您好 ,事件主要是用来监听UI行为的
如果要对两个sheet进行同步,而且用代码的方式,不太理解,为什么需要监听事件。
比如下面的代码
  1. let sheet1,sheet2;
  2. //点击menuVIew去设置行高列宽的点击事件中:
  3. sheet1.setRowHeight(20)
  4. sheet2.setRowHeight(20)
复制代码


即可实现sheet同步。

最后,如果想要监听 页面上面的UI操作,可以使用下面的监听事件:
  1. spread.commandManager().addListener("anyscLicenser", function () {
  2.   for (const element of arguments) {
  3.     let cmd = element.command;
  4.     console.log('命令监听', cmd);
  5.    
  6.   }
  7. });
复制代码





回复 使用道具 举报
eat_grape_5
初级会员   /  发表于:3 天前
8#
littleknife 发表于 2024-6-28 12:41
是的,目的就是两个sheet页同步

既然通过API缩放表单,那在业务代码中是明确知道在哪里或在何时缩放表单的;也希望对sheetA的缩放效果同步到sheetB,那我理解可以在缩放sheetA的同时缩放sheetB,可以跳过事件监听,如下代码示例:
  1. function zoomSync(sheetA, sheetB, zoomValue) {
  2.     sheetA.zoom(zoomValue);
  3.     sheetB.zoom(zoomValue);
  4. };
复制代码

评分

参与人数 1金币 +100 收起 理由
Ellia.Duan + 100

查看全部评分

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:3 天前
9#
您好,您先按照楼上给出的方案处理,有问题随时交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部