思路:

  • v-for遍历出的数据,想要实现默认显示三张,点击更多减少三张,直到展现结束,在点击收起,复原默认,并且各个遍历的item互不影响
  • 在data中申明两个变量,一个存储相应v-for遍历的item索引,一个用来寄存默认的三张照片
  • 在开展更多的办法中,通过splice来扭转相应的值($set也能够)
  • imgList[index] 进行视图渲染, imgIndex[index]寄存item须要减少的图片数量
  • 简略来说要用新数组进行贮存你想展现的状态,用另一个数组进行开展更多的数组索引设置
  • 更新这两个新数组的状态,达到该需要的成果
    <div v-for="(item, index) in backEnd" :key="index">    ...      <div v-for="(img, index) in imgList[index]" :key="index">        <img :src="img">      </div>    <span v-if="imgList[index].length < item.imgArr.length" @click="showMore(index, item)">开展更多</span>    <span v-else @click="showLess(index, item)">收起</span>    <img :class="{'rotateImg': imgList[index].length === item.imgArr.length}" :src="./imgArrow.jpg">    ...    <div></template><script>    data () {      return {        backEnd: [],        imgList: [].        imgIndex: []      }    }    created () {      initData () {        // 调用接口保留数据        axios.post(url).then((res) => {          this.backEnd = res || []          this.backEnd.map((item) => {            // imgList用来寄存默认三张图片            this.imgList.push(item.imgArr.slice(0, 3))            // imgIndex用来寄存点击加载须要的索引            this.imgIndex.push(3)          })        })      }    },    method: {     showMore (index ,item) {       // 设置imgIndex的第index的值加3,用来减少显示图片       this.imgIndex.splice(index, 1, this.imgIndex[index] + 3)       // 设置视图渲染的图片数量       this.imgList.splice(index, 1, item.imgArr.slice(0, this.imgIndex[index]))     },     showLess (index, item) {       // 复原默认imgIdex       this.imgIndex.splice(index, 1, 3)       // 复原成默认三张的状态       this.imgList.splice(index, 1, item.imgArr.slice(0, this.imgIndex[index]))     }    }</script>