当前位置: 首页 > article >正文

【前端开发】JS+Vuew3请求列表数据并分页

应用技术:原生JavaScript + Vue3

$(function () {
   ini();
});

function ini() {
  const { createApp, ref, onMounted } = Vue;
  createApp({
    setup() {
      const data = ref({
        studentList: [],
        page: 1,
        pageSize: 10,
      });

      const getStudentList = async (page, key) => {
        window.onscroll = function () {};
        var _data = data;

        try {
          var formData = {
            pageIndex: page,
            pageSize: _data.value.pageSize,
          };

          const response = await $.ajax({
            url: handlerURL,
            type: "post",
            data: formData,
            dataType: "json",
          });

          if (response.Status) {
            if (page == 1) {
              _data.value.studentList = response.Data.Data.Items;
            } else {
              _data.value.studentList = _data.value.studentList.concat(
                response.Data.Data.Items
              );
            }

            if (page < response.Data.Data.TotalPage) {
              LoadNextPage(page + 1);
            } else {
              LoadNextPage(0);
            }
          } else {
            weui.alert(response.Message);
          }
        } catch (error) {
          weui.alert("数据加载失败!" + error);
        }
      };

	  // 加载下一页
      const LoadNextPage = (nextPage) => {
        if (nextPage) {
          window.onscroll = function () {
            if (getScrollTop() + getClientHeight() + 10 >= getScrollHeight()) {
              getStudentList(nextPage, data.value.searchForm);
            }
          };
        } else {
          window.onscroll = function () {};
        }
      };
      
	  // 获取滚动条当前的位置
	  const  getScrollTop = () => {
		  var scrollTop = 0;
		  if (document.documentElement && document.documentElement.scrollTop) {
		    scrollTop = document.documentElement.scrollTop;
		  } else if (document.body) {
		    scrollTop = document.body.scrollTop;
		  }
		  return scrollTop;
	  }
	
	  // 获取当前可视范围的高度
	  const getClientHeight = () => {
		  var clientHeight = 0;
		  if (document.body.clientHeight && document.documentElement.clientHeight) {
		    clientHeight = Math.min(
		      document.body.clientHeight,
		      document.documentElement.clientHeight
		    );
		  } else {
		    clientHeight = Math.max(
		      document.body.clientHeight,
		      document.documentElement.clientHeight
		    );
		  }
		  return clientHeight;
	  }
	
	  // 获取文档完整的高度
	  const getScrollHeight = () => {
		  return Math.max(
		    document.body.scrollHeight,
		    document.documentElement.scrollHeight
		  );
	  }

      onMounted(() => {
        getStudentList();
      });

      return {
        data,
      };
    },
  })
    .use(vant)
    .mount("#app");
}


http://www.kler.cn/a/418042.html

相关文章:

  • vb.net常用命名空间
  • Doge东哥wordpress主题
  • 查询优化:条件下推
  • MySQL 复合查询
  • spring导出多个文件,要求打包成压缩包
  • 基于Java Springboot宠物医院微信小程序
  • Spring Boot日志总结
  • 大模型开发和微调工具Llama-Factory-->WebUI
  • 架构05-架构安全性
  • 【设计模式系列】备忘录模式(十九)
  • 腾讯云助力央视总台构建国家级新媒体大数据平台
  • 网络工程师——VPN
  • 基于STM32的传感器数据采集系统设计:Qt、RS485、Modbus Rtu协议(代码示例)
  • redis.conf
  • RNN And CNN通识
  • 138.python内置模块sqlalchemy进行sql操作详解
  • RNN模型文本预处理--数据增强方法
  • Linux 常用命令大全与详细讲解
  • leetcode 99. 恢复二叉搜索树
  • 【人工智能基础03】机器学习(练习题)
  • 微前端架构 qiankun
  • 在 Flutter app 中,通过视频 URL 下载视频到手机相册
  • 使用Feign远程调用丢失请求头问题
  • BGE-M3模型结合Milvus向量数据库强强联合实现混合检索
  • Tree搜索二叉树、map和set_数据结构
  • 1074 Reversing Linked List (25)