EasyUI1.4-datagrid checkbox惊现BUG

    一直认为EasyUI在后台管理方面比较专业,并且是开源免费的,所以一直热衷于该框架。

     

      然而,今天使用EasyUI1.4版本(当前最新版本)的datagrid组件时,需要使用checkbox:true选择框列。需求是通过后台传入的数据列来初始化该列是否被选择(也就是把数据库里原有记录过的数据的选择框勾上),然后供操作者继续修改。

 

      按照官方提供的例子,初始化数据确实没有问题(1.3之前的版本是没办法初始化选择框的,只能加载数据之后,再进行勾选操作),如图:

EasyUI1.4-datagrid checkbox惊现BUG

图1 - 代码

EasyUI1.4-datagrid checkbox惊现BUG

图2 - 展示效果

 

        接下来,我需要添加“xx大师”这行数据,勾上之后,执行下面的JS

EasyUI1.4-datagrid checkbox惊现BUG

图3 - JS获取已选行

 

       然后,在我的浏览器alert弹框内,竟然只弹出了我刚才所选取的“xx大师”这行数据, 那么初始化的时候被选择数据行,为什么没有呢?

      带着这个问题,我使用Chrome的F12查看了代码,结果我震惊了....

 

     首先,初始化数据,生成三行数据列表,找到三行数据所在的位置,EsayUI编译后转换的代码是这样

 
EasyUI1.4-datagrid checkbox惊现BUG
 图4 - EasyUI初始化数据后,生成的代码

 

       貌似,这么看起来没觉得什么问题,数据库内已选的两条数据也已经选择上了,并且生成的代码中checked=true的checked值也为checked了。

 

      但是,当我对其进行操作的时候,却发现有点问题了...

      act1:把之前初始化被勾上的选择框去掉


EasyUI1.4-datagrid checkbox惊现BUG
       然后继续使用F12工具观察代码变动


EasyUI1.4-datagrid checkbox惊现BUG

纳尼,居然啥都没变?你**在逗我么?

 

好吧,我继续操作

       act2:把之前操作去掉的勾再次勾上,然后观察代码


EasyUI1.4-datagrid checkbox惊现BUG
 

不管你们发没发现,反正我是发现了:

我们的勾上/取消的操作,EasyUI压根就没更改那个checkbox框的状态,而是直接对该tr进行增加/删除Class。还有getChecked方法也是根据这个Class来获取的,这些都能理解也能接受。

 

但是,我想弱弱地问一下,你丫初始化勾上的数据的时候,不知道给加一个Class啊?

同一个BUG,改了几个版本还没改好,说你啥好?