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

uniapp中mescroll的使用

1.视图 

<mescroll-uniref="mescrollRef"@init="mescrollInit"@down="downCallback"@up="upCallback":up="{auto:false,page:{num:0,size:10}}":fixed="false"
</mescroll-uni>

2.js


1.  引入js文件,不要忘了mixins
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js";export default {mixins: [MescrollMixin, MescrollMoreItemMixin],data() {return {upOption: {        //2.  用来配置无数据时的空显示auto: false,empty: {icon: this.$baseImgUrl+'news_null.png',tip: "暂无数据",}},}}
}3.  数据初始化
onLoad() {this.mescroll.resetUpScroll()},4.methods: {downCallback() {     //下拉刷新this.mescroll.resetUpScroll();},upCallback(page) {     //上滑加载getArticleList({    //接口获取数据列表page_size:page.size,page_no:page.num}).then(({data}) => {if (page.num == 1) this.mainlist = [];let curPageData = data.list;let curPageLen = curPageData.length;let hasNext = !!data.more;        //数据返回没有更多数据了this.mainlist = this.mainlist.concat(curPageData);   // 数据拼接this.mescroll.endSuccess(curPageLen, hasNext);}).catch(() => {this.mescroll.endErr()})},

3.mescroll-mixins.js文件

// mescroll-body 和 mescroll-uni 通用// import MescrollUni from "./mescroll-uni.vue";
// import MescrollBody from "./mescroll-body.vue";const MescrollMixin = {// components: { // 非H5端无法通过mixin注册组件, 只能在main.js中注册全局组件或具体界面中注册// 	MescrollUni,// 	MescrollBody// },data() {return {mescroll: null //mescroll实例对象}},// 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)onPullDownRefresh(){this.mescroll && this.mescroll.onPullDownRefresh();},// 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)onPageScroll(e) {this.mescroll && this.mescroll.onPageScroll(e);},// 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)onReachBottom() {this.mescroll && this.mescroll.onReachBottom();},methods: {// mescroll组件初始化的回调,可获取到mescroll对象mescrollInit(mescroll) {console.log(mescroll)this.mescroll = mescroll;this.mescrollInitByRef(); // 兼容字节跳动小程序},// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)mescrollInitByRef() {if(!this.mescroll || !this.mescroll.resetUpScroll){let mescrollRef = this.$refs.mescrollRef;if(mescrollRef) this.mescroll = mescrollRef.mescroll}},// 下拉刷新的回调 (mixin默认resetUpScroll)downCallback() {if(this.mescroll.optUp.use){this.mescroll.resetUpScroll()}else{setTimeout(()=>{this.mescroll.endSuccess();}, 500)}},// 上拉加载的回调upCallback() {// mixin默认延时500自动结束加载setTimeout(()=>{this.mescroll.endErr();}, 500)}},mounted() {this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况}}export default MescrollMixin;

4.mescroll-more-item.js文件

/*** mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例)*/
const MescrollMoreItemMixin = {// 支付宝小程序不支持props的mixin,需写在具体的页面中// #ifndef MP-ALIPAY || MP-DINGTALKprops:{i: Number, // 每个tab页的专属下标index: { // 当前tab的下标type: Number,default(){return 0}}},// #endifdata() {return {downOption:{auto:false // 不自动加载},upOption:{auto:false // 不自动加载},isInit: false // 当前tab是否已初始化}},watch:{// 监听下标的变化index(val){if (this.i === val && !this.isInit) {this.isInit = true; // 标记为truethis.mescroll && this.mescroll.triggerDownScroll();}}},methods: {// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)mescrollInitByRef() {if(!this.mescroll || !this.mescroll.resetUpScroll){// 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标'let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i];if(mescrollRef) this.mescroll = mescrollRef.mescroll}},// mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit)mescrollInit(mescroll) {this.mescroll = mescroll;this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序// 自动加载当前tab的数据if(this.i === this.index){this.isInit = true; // 标记为truethis.mescroll.triggerDownScroll();}},}
}export default MescrollMoreItemMixin;

相关文章:

  • 医院如何筛选安全合规的内外网文件交换系统?
  • uniapp如何添加多个表单数组?
  • iPhone 14支持NFC吗?如果支持,那么怎么启用
  • 华为radius认证
  • Qt 信号与槽
  • 时序数据库 Tdengine 执行命令能够查看执行的sql语句
  • Matlab plot绘图的 title 语法
  • 前端怎么监听手机键盘是否弹起
  • QGIS编译(跨平台编译)之二十七:giflib编译(Windows、Linux、MacOS环境下编译)
  • 高考复习技巧考研资料、美赛论文及代码,数据收集网站(初高中招生考试全科试卷等)
  • 视觉检测系统:工厂生产零部件的智能检测
  • protobuf-go pragma.go 文件介绍
  • 如何用Docker+jenkins 运行 python 自动化?
  • excel中去掉单元格中两个数字之间的空格
  • 《HelloGitHub》第 94 期
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【5+】跨webview多页面 触发事件(二)
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Apache Spark Streaming 使用实例
  • CAP 一致性协议及应用解析
  • css布局,左右固定中间自适应实现
  • GraphQL学习过程应该是这样的
  • log4j2输出到kafka
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • October CMS - 快速入门 9 Images And Galleries
  • Vue2 SSR 的优化之旅
  • yii2中session跨域名的问题
  • 编写符合Python风格的对象
  • 扑朔迷离的属性和特性【彻底弄清】
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 山寨一个 Promise
  • 阿里云ACE认证学习知识点梳理
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #数学建模# 线性规划问题的Matlab求解
  • (二)fiber的基本认识
  • (一)Dubbo快速入门、介绍、使用
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)用.Net的File控件上传文件的解决方案
  • *** 2003
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat文件调用java类的main方法
  • .net refrector
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET框架设计—常被忽视的C#设计技巧
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [acm算法学习] 后缀数组SA
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [C#] 如何调用Python脚本程序
  • [CSS]盒子模型
  • [CSS3备忘] transform animation 等