收藏
回答

splice删除数组最后一个元素,导致swiper不显示

data: {

h: ["1""2""3"]

}


将 h 数组的 value 作为前台的 id。

wxs 内的删除方法:


this.data.h.splice(e.target.id, 1)

this.setData({

h: this.data.h

})

console.log(e);

console.log(e.currentTarget.id);

console.log(this.data.h);


删除e.taget.id = 0 和 e.taget.id = 1 的时候没问题,当 e.target.id = 2 的时候,spilce 完以后,整个页面显示为空,console 控制台无任何报错。经过测试,只要删除最后一个元素,页面循环生成的swiper就不显示了,什么都没有,但是log打印出数组还是正常的。


最后一次编辑于  2018-06-18  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 生擒嫦娥炖玉兔
    生擒嫦娥炖玉兔
    2018-06-19

    删除数组元素的时候没有把swiper的current属性值同步改下,删除前两个没有问题是因为current为0和1的时候即便你删除了一个元素都能取到数组里的值,当current为2的时候,你删除了数组元素,但是current的值还是2,所以取不到值,页面显示空白!

    2018-06-19
    赞同 1
    回复 5
    • 黑蛮
      黑蛮
      2018-06-20

      你说的很对,确实是这个问题,已经改了,感谢!

      2018-06-20
      回复
    • 忘れてた
      忘れてた
      2018-07-19回复黑蛮

      我也遇到了,请问怎么改的,我把current值减了1,还是不行

      2018-07-19
      回复
    • CJ
      CJ
      2018-09-24回复黑蛮

      请问是怎么解决的?

      我也碰到这个问题,数组长度缩减,也重新设置了current=0,但current还是会取到超出数组长度的值,然后swiper就空白了

      2018-09-24
      回复
    • 黑蛮
      黑蛮
      2018-09-27回复CJ

      每次console.log看一下你的current值,是不是在动态更新。这个问题确实是删除后没有更新current导致的。

      2018-09-27
      回复
    • CJ
      CJ
      2018-09-27回复黑蛮

      谢谢,我现在改成每次判断current是否超出数组范围,超出了就取模

      2018-09-27
      回复