加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex在使用itemrender时,再次刷新数据时itemrender错乱问题

发布时间:2020-12-15 03:38:51 所属栏目:百科 来源:网络整理
导读:显然flex为了保证执行效率,只是单纯的更新了数据部分。忽略了视图部分的更新。已经给出了一个可行的解决方案,链接如下 http://bbs.9ria.com/viewthread.php?tid=66077 以上的方案是利用绑定,把checkbox的selected属性绑定到dataProvider中。这样就把他当
显然flex为了保证执行效率,只是单纯的更新了数据部分。忽略了视图部分的更新。已经给出了一个可行的解决方案,链接如下 http://bbs.9ria.com/viewthread.php?tid=66077
以上的方案是利用绑定,把checkbox的selected属性绑定到dataProvider中。这样就把他当做了一个数据,flex就会自动更新了。
不过由于贫道开发的时候,不适合用绑定,所以不得不另辟捷径,所幸最后找到了另外的解决办法。
通过updateComplete事件。我是UIComponent的一个事件,当flex组件的生命周期结束,也就是执行了commitProperties,measured,updateDisplayList后,我便会被派发。

根据list的渲染原理,假如数据源也就是dataProvider有10条数据,但是flex不会创建10个实例,他只会创建显示出来的那几条数据的实例。当我们拉动滚动条的时候,flex会根据当前的滚动位置来更新实例的数据内容。也就是说,当更新完毕后,他一定会派发updateComplete事件。我的思路就是,对itemrender的updateComplete事件进行侦听。
因为当玩家选中checkbox时,我把对应的itemrender中的数据的某一个唯一的属性记录下来,用来代表,当前lsit列表中的这个数据的checkbox已经被选中。加入我选了一个叫做heroID的属性,因为我是用这个来做将领列表的呈现的。heroID是唯一的。我选中一个将领,就把他的heroID放到外面的一个数组中。这样所有选中的将领都被记录下来。然后就在updateComplete事件做判断,当更新后的itemrender的heroID没有在外面数组中,就代表没有被选中,那么就把checkbox的选中状态设为flase,反之,设为true.这样就达到了之前一样的效果。

这个方案的核心思想就是利用updateComplete事件。


转载地址:http://bbs.9ria.com/thread-113497-1-1.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读