Vant2+Vue2实现点击加载更多数据~

在做题目的时候遇到这么一个问题

但是发现这个要求的时候已经把数组都渲染好了

    <div class="main">
      <van-tabs v-model="active">
        <van-tab>
          <template #title>
            <a href="javascript:void(0)" @click="getAll">默认</a> </template>
          <van-grid :border="false" :column-num="2">
            <van-grid-item v-for="item in allList" :key="item.id">
              <van-image :src="item.url" />
              <p>{{item.name}}</p>
              <h3>¥{{item.price}}</h3>
            </van-grid-item>
          </van-grid>
        </van-tab>
        <van-tab>
          <template #title>
            <van-icon name="sort" />
            <a href="javascript:void(0)" @click="orderSort">默认</a>
          </template>
          <van-grid :border="false" :column-num="2">
            <van-grid-item v-for="item in allList" :key="item.id">
              <van-image :src="item.url" />
              <p>{{item.name}}</p>
              <h3>¥{{item.price}}</h3>
            </van-grid-item>
          </van-grid>
        </van-tab>
        <van-tab>
          <template #title>
            <a href="javascript:void(0)" @click="timeSort">新品</a> </template>
          <van-grid :border="false" :column-num="2">
            <van-grid-item v-for="item in allList" :key="item.id">
              <van-image :src="item.url" />
              <p>{{item.name}}</p>
              <h3>¥{{item.price}}</h3>
            </van-grid-item>
          </van-grid>
        </van-tab>
      </van-tabs>

然后要根据需求去实现对应的:当数组的长度>10个的时候,就先展示十个,然后点击下面的加载更多就可以把后面的渲染出来,而且是指定的个数

那么就可以用到slice

1、声明一个长度变量,配合slice方法

在data上声明一个变量:length,值指定,我这里给10,这里我默认展示0-10条数据

我这里的HTML结构是用了vant2的自定义宫格,然后对宫格做循环才渲染的列表

 要改的话对循环动刀就可以了

思路:把数组进行分隔渲染

给循环的数组添加分隔函数

分隔从0开始,不包含10嘛,就一共是10条,这个length是前面定义的变量

但是这个时候报错了

 但是删掉splice()函数后数组又正常渲染,那么就是函数的问题了

去看了一下

 splice会把分隔结果返回给原数组(覆盖掉)

这个时候发现了另外一个方法:slice()

 

 那这个时候试着去对循环的数组用上 slice()方法

 这里为了方便看就先把length改为2了

        

打开页面一看,欸,没有保存,还成功了

然后接下来就要求实现【点击加载更多】这个效果了 

2、实现点击加载更多

前提:这个时候已经做了一个分隔,length的值我这里改为2,方便观察

在底部去声明一个P标签

 然后在下面声明一个P标签,给P标签加一个v-if和点击事件

点击事件里面对length变量进行一个 length+=要额外添加的个数

v-if去对p做一个判断,如果length的长度小于原数组长度就让length++

            <p v-if="length < allList.length" @click="length += 2" class="footer">———— 点击加载更多 ————</p>
            <p v-else class="footer">———— 没有更多了 ————</p>

 这里没有隐藏掉,是改了文字

 点击加载

 完成了思密达!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长风沛雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值