测试产品列表时发现,在模拟器上使用列表筛选功能,能够正确显示列表个数,但在手机端个数显示多了,经排查是因为 img 标签使用了 binderror 功能,图片显示错误时调用了替代图片。
使用筛选功能后,产品列表的数量由 12 减少至 6,但之前 binderror 并未全部全部替换,特别是当 img 标签启用了 lazy-load='true' 功能,导致上一次列表的 binderror 继续执行
解决方法,插入图片时判断新列表时候有新列表的 key 存在,存在再替换默认图片 arr.hasOwnProperty()
errorFunction: function(event) { console.log('errorFunction') console.log(event) var index = event.currentTarget.dataset.index console.log(index) var img = 'rlist[' + index + '].DefaultPicUrl_s' if (this.data.rlist.hasOwnProperty(index)) { this.setData({ [img]: this.data.img_error }) } },