ng|移动端无限滚动/横向(X轴)tab选择
无限滚动并加载数据 【ng|移动端无限滚动/横向(X轴)tab选择】其中还有加载时图片的展示
这里结合ionic4写的
// 统一处理结果
handleResult(res: CommonProductResult) { // 定义下接口回值的属性
this.isNoSuch = false;
//加载时的图片
this.isWaiteList = false;
//返回无数据时给占位符
if (!!res.list.length) {
if (this.pageNum > DEFAULT_PAGE_NUM) { // 判断第几页 感觉这个判断写的有点淤积
this.commodityList = [...this.commodityList, ...res.list];
// 滚动加载
} else {
this.commodityList = res.list;
// 普通请求
}
} else if (!res.list.length) {
if (!!this.commodityList) {
this.isNoSuch = false;
// 加载时的图片 以后可以优化到observice(Rxjs)
this.pageNum = 1;
// 返回为空时回到第一页
} else if (!this.commodityList) {
this.isNoSuch = true;
this.pageNum = 1;
}
}
}
// 无限滚动
async doInfinite(ev) {
this.pageNum++;
const param = {
// 这就是接口入参嘛
};
const res = await this.service.obtainList({ ...param });
// 调用service方法并取值
this.handleResult(res);
// 处理数据的一个函数
ev.target.complete();
// ionic的方法
if (this.pageNum * DEFAULT_PAGE_SIZE >= this.commodityCount) {
ev.target.disable = true;
// ionic的方法
}
}// 页面滚动处理
handleScroll(ev: CustomEvent) {
this.scrollTop = ev.detail.currentY;
}
Html给一个不完整的Demo
class="commodity-span">{{commodity.productname}}
class="no-such-span">Sorry, the product you searched cannot be found at the moment.
横向滚动
// 横向滑动条
.menu-box {
width: 100%;
height: rem(44);
background: #ffffff;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
// position: fixed;
// top: rem(46);
// z-index: 10;
.menu-content {
display: inline-block;
margin: rem(11) rem(10);
color: #999999;
line-height: rem(22);
font-size: 16px;
text-align: center;
&:first-child {
margin-left: rem(15);
}
}.menu-discoloration {
display: inline-block;
margin: rem(11) rem(10);
color: #ff7700;
border-bottom: 2px solid rgba(255, 119, 0, 1);
padding-bottom: rem(9);
line-height: rem(22);
font-size: 16px;
text-align: center;
&:first-child {
margin-left: rem(15);
}
}
}
.menu-box::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
async changeHandleWarehouse(comeFrom = 'all', len: number) {
// 仓库选择index 横向滑动
const menuBox = document.getElementById('menuBox');
let needScroolTo = 0;
// 第一个li的长度
for (let i = 0;
i < len;
i++) {
const liTh = document.getElementById(`li${i}th`);
const liThWidth = parseInt(window.getComputedStyle(liTh).width, 10);
needScroolTo += liThWidth;
}
menuBox.scrollTo(needScroolTo, 0);
// 接取接口
this.classListIndex = comeFrom;
this.isNoSuch = false;
this.isWaiteList = true;
this.content.scrollToTop(0);
await this.getList({ nationType: this.classListIndex, pageSize: 10 });
}
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- Node.js中readline模块实现终端输入
- django-前后端交互
- 移动端h5调试方法
- “沉溺”疫情
- Jsr303做前端数据校验
- 07/22【晨读感悟】保持好奇心,生活才有无限可能
- 40under40|40under40|思想会-那什么拯救你,我的"高端"甲方"爸爸"
- 端银×八正道|端银×八正道 | 21天百万实操信用卡特训营045+Dodo第5次作业
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件