本文介绍: 如上图:点击点击加载更多”按钮实现分页加载一页,直到最后一页,提示“已经到底啦~”以上,因为我的场景需要远程搜索,所以我把remote方法也贴上了,不需要的可自行删减。由于项目下拉框数据过多,一次性加载完,会有性能问题,于是希望可以增加。希望记录问题能帮助到你!

在这里插入图片描述


需求:

由于项目下拉框数据过多,一次性加载完,会有性能问题,于是希望可以增加分页加载更多功能


实现效果

如上图:点击点击加载更多”按钮实现分页加载下一页,直到最后一页,提示“已经到底啦~”


实现代码:

html

<el-select
  class="input-search"
  v-model="proName"
  remote
  :remote-method="getOptionList"
  @change="changePro"
  :loading="sloading"
  size="small"
  clearable
  filterable
  placeholder="请选择所属平台/App"
&gt;
  <el-option
    v-for="item in selectList"
    :key="item.projectId"
    :label="item.projectName"
    :value="item.projectName"
  &gt;</el-option&gt;
  <template&gt;
    <el-row type="flex" justify="center"&gt;
      <p
        @click="loadMorePro"
        style="font-size: 12px;color: #1368ff;cursor: pointer;"
      &gt;
        点击加载更多
      </p&gt;
      <p
        v-show="left.totalPage > 1 &amp;&amp; left.pageNum == left.totalPage"
        style="color: #ccc; font-size: 12px"
      >
        已经到底啦~
      </p>
    </el-row>
  </template>
</el-select>

js核心方法:

// 触发下拉框加载更多
loadMorePro() {
      this.left.pageNum++;
      this.sloading = true;
      this.searchData = {
        pageNo: this.left.pageNum,
        pageSize: this.left.pageSize,
        projectName: this.left.projectName || ''
      };
      listProject(this.searchData)
        .then(res => {
          if (res.data &amp;&amp; res.data.records) {
          	// 加载的新1页数据,与之前加载的数据合并
            this.selectList = [...this.selectList, ...res.data.records];
            // 总页数控制是否显示加载更多按钮,如果后端接口返回,可使用total总条数计算也可
            this.left.totalPage = res.data.pages || 1; 
          }
          this.sloading = false;
        })
        .finally(() => {
          this.sloading = false;
        });
    },
 // 监听下拉切换
 changePro(name) {
   this.queryType = 1;
   this.pageNum = 1;
   this.left.pageNum = 1; // 需要重置
   this.left.projectName = name;
   this.getTableData();
   this.getOptionList();
 },
 // 获取下拉框数据
  getOptionList(name) {
    this.selectList = []; // 需要清空
    this.sloading = true;
    this.searchData = {
      pageNo: this.left.pageNum,
      pageSize: this.left.pageSize,
      projectName: name || ''
    };
    listProject(this.searchData)
      .then(res => {
        this.sloading = false;
        this.selectList = res.data.records || [];
        this.left.totalPage = res.data.pages || 1;
      })
      .finally(() => {
        this.sloading = false;
      });
  },

以上,因为我的场景需要远程搜索,所以我把remote方法也贴上了,不需要的可自行删减
希望记录问题能帮助到你!
end~

原文地址:https://blog.csdn.net/weixin_52443895/article/details/134668424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_5573.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注