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

QQ登录

只需一步,快速开始

清风沐阳

注册会员

1

主题

1

帖子

14

积分

注册会员

积分
14
  • 46

    金币

  • 1

    主题

  • 1

    帖子

最新发帖
清风沐阳
注册会员   /  发表于:2025-3-31 11:47  /   查看:93  /  回复:4
1金币
本帖最后由 清风沐阳 于 2025-3-31 11:50 编辑

我的自定义单元格类型:CustomCellType中,有一个自定义utils属性是另一个CustomUtils类的实例,当我复制或拖拽填充这个单元格的时候,发现utils似乎只被浅拷贝了导致我的逻辑有问题,
示例:

(1)在CustomCellType的constructor中实例化utils(this.utils = new CustomUtils())

(2)CustomUtils中有一个属性startX负责保存paint中的x值,有一个方法onPaint接收CellTypes.Base paint方法所有参数(paint(ctx, value, x, ...) { this.utils.onPaint(ctx, value, x, ...)}),并在utils的onPaint方法中更新startX的值(onPaint(ctx, value, x, ...) {this.startX = x})

(3)在CustomCellType的processMouseMove方法中调用this.utils.startX, 发现所有的CustomCellType单元格的utils的startX都是新的粘贴单元格的startX(实际上两个单元格根本不在同一列)


最佳答案

查看完整内容

在复制或者拖拽填充的时候, Sheet会去调用CellType的toJSON和fromJSON方法进行复制, 你可以在CustomCellType类里面实现toJSON和fromJSON, 每次fromJSON都创建新的CustomUtils就可以了

4 个回复

倒序浏览
最佳答案
最佳答案
刘老太
注册会员   /  发表于:2025-3-31 11:47:15
来自 3#
在复制或者拖拽填充的时候, Sheet会去调用CellType的toJSON和fromJSON方法进行复制, 你可以在CustomCellType类里面实现toJSON和fromJSON, 每次fromJSON都创建新的CustomUtils就可以了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-4-1 11:48:05
2#
您好,SpreadJS官方的API中没有关于CustomUtils类的任何资料。您是在哪里得知的CustomUtils类呢?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-4-1 17:38:05
4#
刘老太 发表于 2025-4-1 14:10
在复制或者拖拽填充的时候, Sheet会去调用CellType的toJSON和fromJSON方法进行复制, 你可以在CustomCellTyp ...

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:昨天 09:28
5#
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部