Day 7 选择一个单元格

返回目录

 

以下知识源码位置: [Git:  https://gitee.com/zhouweng/mini_sheet  version=f0c74ce3dec88ee59ca6d8be27d2872b41e73831]

源代码回滚版本,参考这里[ https://blog.csdn.net/u010593516/article/details/113767587 ]

 

上一节,我们为项目增加了交互的能力,这一节,我们继续扩展handler.js,增加单个单元格的点选,效果如下:

 

0.基础知识:

 Javascrit: 数组[].push()

 Goole浏览器的F12 调试断点

 

1.修改文件:

1)Store/index.js : Store里面增加了一个luckysheet_select_save,这是一个数组,用于传递哪些单元格被选中,

  在minisheet的这个版本只支持单个单元格的选定。

 

2)controller/constant.js: 在 luckysheet-cell-main 元素下,增加了luckysheet-cell-selected-boxs,再下面,增加了

 luckysheet-cell-selected,之前章节里面 canvas是绘制在  luckysheetTableContent上面,而选定的单元格,相当于是

 浮在 一个已经绘制好的表格图片之上。html元素的关系,可以参考 源代码的 readme.md 

 

3)controller/handler.js: 在#luckysheet-cell-main, #luckysheetTableContent 元素上增加了一个 mousedown(),

  通过global/location 定位具体的单元格位置,并记录到 Store.luckysheet_select_save数组,然后再调用 

  select.selectHightlightShow(),实现对单元格位置的矩形样式处理

 

2.新增文件:

1)global/location.js: 这个js文件包括三个对外服务的方法:

  mouseposition(x, y):把鼠标点击xy坐标,变换为 表格区域相对位置;

  colLocation(x): 鼠标点击的是x轴方向的哪个单元格,这里非常巧妙地使用了Store.visibledatacolumn[]数组进行定位;

  colLocation(y): 鼠标点击的是y轴方向的哪个单元格,逻辑同上

2)controller/select.js:这个js文件的 selectHightlightShow() 方法,由handler的鼠标左键触发,通过传递过来的Store.luckysheet_select_save[]数组,

把相对应的单元格点亮。值得注意的是,处理点亮动作用到了循环,在luckysheet里面

支持多个单元格的选定(通过键盘的shift和ctrl键组合),在minisheet里面,目前只支持单个单元格的选定,所以,循环实际

可以忽略。

 

3.Store的两个visibledata 数组分析

  下面来具体研究一下,Store.visibledatarow 和 Store.visibledatacolumn 两个数组的实现和使用原理,这两个数组生成数据的逻辑位于 rhchInit.rhchInit(),

x和y轴分别通过两个循环体,生成每一个单元格的虚拟位置,我们再rhchinit.js 的Line27 增加一个断点,然后刷新页面,可以看到 Store.visibledatarow的

数据结构如下:

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值