起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1738|回复: 2

[结贴] Wex5 list刷新触发两次AfterRender事件

[复制链接]

107

主题

385

帖子

1048

积分

金牌会员

Rank: 6Rank: 6

积分
1048
QQ
发表于 2017-10-12 15:46:52 | 显示全部楼层 |阅读模式
list和data绑定后,只有data组件第一次加载的时候,list的AfterRender事件进入一次。后面不论是下拉list还是调用list的refresh(true)方法,都是触发两次AfterRender事件。

求解决方法~~
发表于 2017-10-18 13:29:36 | 显示全部楼层
AfterRender  表示 每一行渲染完毕就触发一次!
请问你有几行数据?原则上 data组件中有几行数据就会触发几次的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

107

主题

385

帖子

1048

积分

金牌会员

Rank: 6Rank: 6

积分
1048
QQ
 楼主| 发表于 2017-10-18 14:27:06 | 显示全部楼层
liangyongfei 发表于 2017-10-18 13:29
AfterRender  表示 每一行渲染完毕就触发一次!
请问你有几行数据?原则上 data组件中有几行数据就会触发几 ...

我的描述有点问题,你说的没错,是有几行就触发几次。   实际上我这边真正的问题是:调用list的refresh事件后,list的AfterRender进入了两轮,比如有5条数据,按道理应该进入5次,可是真正进入了10次。  
原因我也找到了,是因为我用的异步加载数据造成的。在异步加载数据后台还没返回的时候,前台data组件的CustomRefresh事件已经完成,里面还是原来的5条数据,这时候直接渲染了list,所以list的AfterRender进入一轮。等后台把数据返回后,我调用了data的loadData方法,此时list又被渲染了一次,所以又进入了AfterRender事件。就这样造成刷新两次。
解决方法是在data的CustomRefresh事件中,判断如果offset为0即刷新,则清空data中的数据,这样就不会刷新两次。但是此时清空数据,用data的clear或者remove都会再次进入CustomRefresh事件,所以只能用deleteAllData方法删除,但是需要将deleteConfirm先设置为false,否则会有提醒。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-30 03:04 , Processed in 0.066282 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表