| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | // 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) {			this.mescroll = mescroll;			this.mescrollInitByRef(); // 兼容字节跳动小程序		},		// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序: http://www.mescroll.com/qa.html?v=20200107#q26)		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;
 |