handsontable使用及遇到的坑--公式计算(思路)

公式

公式的计算可使用堆栈的思想将运算符后置,如:C1=(A1+A2)*5+B1可以变换成:[A1,A2+5*B1]
计算过程为,假设A1=1,A2=2,B1=3
C1=(A1+A2)*5+B1
[A1,A2+5*B1]
[1,2,+,5*,3,+]
[3,5*,3+]
[15,3+]
[18]
这样即可计算出最终答案C1=18

当计算公式中值发生变化时处理方法

前面提到过自定义数据结构,可以定义单元格的依赖
C1依赖A1,A2,B1,当这个三个单元格的值发生变化时需要重新计算C1的值

方式一

第一次我采用的方法邻接关系(有向图),假设上面的表格是3*3,则矩阵为

*A1A2A3B1B2B3C1C2C3
A1------T--
A2------T--
A3---------
B1------T--
B2---------
B3---------
C1---------
C2---------
C3---------

加设当A1的值发生变化,只查第二行,法向C1依赖他,然后更新C1,继续查C1列发现没有单元格依赖就停止了

方式二

采用订阅,来触发更新,
写一个事件类,C1,订阅A1A2B1,当这三个单元格值发生变化时发出change事件,C1就更新

这些都是我已经实现了的,绝对可行……

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>