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

做网站官网搭建网站工具

做网站官网,搭建网站工具,基于jsp的b2b网站建设,软件开发项目甘特图将公司项目H5页面重构的时候,有一个类似购物车的页面,需要上拉加载,下拉刷新。使用的UI组件的是vant,其中看起来van-list 很符合基本需求,就果断进行了copy 修改。但是,在进行具体的业务交互的时候突然发现…

将公司项目H5页面重构的时候,有一个类似购物车的页面,需要上拉加载,下拉刷新。使用的UI组件的是vant,其中看起来van-list 很符合基本需求,就果断进行了copy 修改。但是,在进行具体的业务交互的时候突然发现,看似满足需求的组件突然不符合要求了。下拉刷新直接使用van-pull-refresh就可以整个页面进行下拉刷新请求列表数据。这个是没有问题的,主要就出在van-list 的load方法,虽然滚动到底部加载更多以及必要的提示信息配置的很齐全,每次进入页面就触发load,对于进入编辑页面进行编辑后返回不是很友好,一般都是点击列表某一项进入编辑,返回列表更新数据,展示的视口最好是之前点击的是哪里现在就是哪里。van-list load方法进行阻断和调整都不是很顺利因此果断放弃。

解决办法:

首先实现加载更多这里推荐一下收藏的博主的地址 移动端上拉加载更多(vue3+vite+vant)_vue3 上拉加载更多-CSDN博客

这里封装的方法很是实用,完善过得那个没有使用明白,就单纯实用widow版本的。代码如下

import { onMounted, onUnmounted, ref } from "vue";export default function () {//页面是否滑动到最底部const isReachBottom = ref(false);//窗口滚动的距离const scrollTop = ref(0);//窗口可滚动的高度const scrollHeight = ref(0);// 监听窗口的滚动const scrollListener = () => {const clientHeight = document.documentElement.clientHeight;scrollTop.value = Math.floor(document.documentElement.scrollTop)scrollHeight.value = document.documentElement.scrollHeight;//窗口可滚动的高度    窗口滚动的距离+页面窗口的位置if (scrollHeight.value <= scrollTop.value + clientHeight + 1) {isReachBottom.value = true;}};//页面挂载添加监听onMounted(() => {window.addEventListener("scroll", scrollListener);});// 离开页面取消监听onUnmounted(() => {window.removeEventListener("scroll", scrollListener);});return {isReachBottom,scrollTop,scrollHeight,};
}

引入方式同原文   启用了两个监听事件  一个是判断是不是到底部  一个是获取当前滚动条高度。

监听到底部事件中,做了判断,

watch(isReachBottom, (newVal) => {if (newVal) {if (list.value.length > 0 && list.value.length >= total.value) {showToast("已经没有更多了");return false;}list.value.length < total.value && !loading.value && (page.value += 1);list.value.length < total.value && !loading.value && init(page.value);isReachBottom.value = false;}
});

这样可以保证页面不会无缘无故增加请求回来空数组了 也不会因为有一个请求过长就进行下一次请求了。

在点击编辑时记录当前分页和滚动条高度为了避免麻烦我进行了取整处理。页面路由守卫进行了处理只有是发现在列表页和编辑页来回跳转时不对缓存的页面信息和高度信息进行处理 其他路由会移除存储的页面和高度信息。

onMounted(async () => {const cachData = tool.data.get("cachData");if (!cachData) {init(1);} else {page.value = cachData.page;await refreshData();await nextTick(() => {window.scrollTo(0, cachData.height);});}
});

页面加载判断这里一开始犯了个错误就是缓存的高度一回来赋值给之前记录高度的变量导致滚动高度不对,后来点击多次发现滚动直接使用缓存高度就可以。这里最重要的是使用分页请求数据,加载更多是累加的所以

const refreshData = async () => {// 刷新数据时,获取所有相关页面的数据for (let i = 1; i <= page.value; i++) {await init(i);}
};

这样就实现了我需要的需求交互了,刚发现一个问题,滚动高度的计算在手机网页端需要减去导航栏的高度,不然上拉加载方法会失效!!!!

http://www.hengruixuexiao.com/news/51209.html

相关文章:

  • 如何寻找一批做网站的公司自助建站系统软件
  • 寮步营销型网站建设价格百度付费问答平台
  • 做网站使用什么语言好免费seo在线工具
  • 动态网站代做国家卫健委每日疫情报告
  • 建网站深圳58同城发布免费广告
  • 网站源码上传图片出错百度左侧排名
  • 定州网站建设最新的网络营销方式
  • 北京矿建建设集团有限公司 网站无锡seo排名收费
  • 搬瓦工做网站好慢2345中国最好的网址站
  • 网站建设费会计科目seo站内优化培训
  • 江苏质量员证在哪个网站做的英文seo推广
  • 找人帮你做PPT的网站2023网站分享
  • 用户体验设计课程seo是什么服务
  • 网站建设公司 知乎百度导航最新版本下载安装
  • 30天网站建设全程实录松松软文
  • 网站加速器免费永久金华seo全网营销
  • 营销型网站建设大千it培训学校it培训机构
  • 怎么在搜索引擎里做网站网页小红书搜索指数
  • 做招聘网站需要人力资源许可免费搭建网站
  • 网站如何自己做支付大数据查询个人信息
  • 做网站 node php网销怎么找客户资源
  • 金泉网做网站找谁b2b免费发布信息网站
  • 江苏工业互联网公司排名白杨seo课程
  • 佛山网站建设网络推广网站seo平台
  • 手机端网站怎么做seo广州seo报价
  • 如何做网站title小标图seo运营人士揭秘
  • ppt模板如何制作seo 推广
  • 华为云速建站教程个人怎么做百度竞价
  • 十大赚钱小程序长沙seo外包优化
  • wordpress 好用吗网站seo是啥