收藏
回答

列表中的图片删除其中一个后,image的bindload会再次执行,且赋值混乱

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug image 客户端 7.0.5 2.7.5

有一组数据,图片需要bindload拿到宽高,第一次接口获取数据后,bindload可正确执行且只执行一次,图片显示正常;之后删除其中一条数据,重新setData了,图片会执行bindload,但是图片会执行多次,每次拿到的宽高不一样,请问bindload到底什么时候会执行?

最后一次编辑于  07-25
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    07-25

    当图片载入完毕时触发,可以提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    07-25
    赞同
    回复 1
    • July
      July
      07-25

      那我同一组数据多次进行setData,bindload会再次执行吗?而且有些图片的bindload会执行多次的

      07-25
      回复
  • 00011111000101111011001110011000
    00011111000101111011001110011000
    07-25

    图片只有网络请求完成之后才会走bindload 事件,请求完之后就已经缓存在本地了,setData后不会走 bindload事件

    解决方案:

    1. 给图片固定宽度并且 mode="aspectFill" 这样图片的高度会自适应

    2.每个图片地址加个随机数,如: xxx.png?r=123   这样图片就不会被缓存 bindload 事件生效

    07-25
    赞同
    回复 3
    • July
      July
      07-25

      谢谢你的回答。

      1、产品的需求是不光高度自适应:横长图,高度自适应;竖长图时,宽度自适应,所以才会采取计算宽高的;

      2、数据setData后,删除其中一条数据,再次setData,图片还是会执行bindload的,而且同一张图片会执行多次;

      07-25
      回复
    • 00011111000101111011001110011000
      00011111000101111011001110011000
      07-25回复July
      可以让后端返回图片宽高信息,虽然后端会比较麻烦 但我就是这样做的
      07-25
      回复
    • July
      July
      07-25回复00011111000101111011001110011000

      倒也是个方法,但是要说服后端有一定难度

      07-25
      回复