| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | // 定义在wxs (含renderjs) 逻辑层的数据和方法, 与视图层相互通信const WxsMixin = {	data() {		return {			// 传入wxs视图层的数据 (响应式)			wxsProp: {				optDown:{}, // 下拉刷新的配置				scrollTop:0, // 滚动条的距离				bodyHeight:0, // body的高度				isDownScrolling:false, // 是否正在下拉刷新中				isUpScrolling:false, // 是否正在上拉加载中				isScrollBody:true, // 是否为mescroll-body滚动				isUpBoth:true, // 上拉加载时,是否同时可以下拉刷新				t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)			},						// 标记调用wxs视图层的方法			callProp: {				callType: '', // 方法名				t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)			},						// 不用wxs的平台使用此处的wxsBiz对象,抹平wxs的写法 (微信小程序和APP使用的wxsBiz对象是./wxs/wxs.wxs)			// #ifndef MP-WEIXIN || APP-PLUS || H5			wxsBiz: {				//注册列表touchstart事件,用于下拉刷新				touchstartEvent: e=> {					this.mescroll.touchstartEvent(e);				},				//注册列表touchmove事件,用于下拉刷新				touchmoveEvent: e=> {					this.mescroll.touchmoveEvent(e);				},				//注册列表touchend事件,用于下拉刷新				touchendEvent: e=> {					this.mescroll.touchendEvent(e);				},				propObserver(){}, // 抹平wxs的写法				callObserver(){} // 抹平wxs的写法			},			// #endif						// 不用renderjs的平台使用此处的renderBiz对象,抹平renderjs的写法 (app 和 h5 使用的renderBiz对象是./wxs/renderjs.js)			// #ifndef APP-PLUS || H5			renderBiz: {				propObserver(){} // 抹平renderjs的写法			}			// #endif		}	},	methods: {		// wxs视图层调用逻辑层的回调		wxsCall(msg){			if(msg.type === 'setWxsProp'){				// 更新wxsProp数据 (值改变才触发更新)				this.wxsProp = {					optDown: this.mescroll.optDown,					scrollTop: this.mescroll.getScrollTop(),					bodyHeight: this.mescroll.getBodyHeight(),					isDownScrolling: this.mescroll.isDownScrolling,					isUpScrolling: this.mescroll.isUpScrolling,					isUpBoth: this.mescroll.optUp.isBoth,					isScrollBody:this.mescroll.isScrollBody,					t: Date.now()				}			}else if(msg.type === 'setLoadType'){				// 设置inOffset,outOffset的状态				this.downLoadType = msg.downLoadType			}else if(msg.type === 'triggerDownScroll'){				// 主动触发下拉刷新				this.mescroll.triggerDownScroll();			}else if(msg.type === 'endDownScroll'){				// 结束下拉刷新				this.mescroll.endDownScroll();			}else if(msg.type === 'triggerUpScroll'){				// 主动触发上拉加载				this.mescroll.triggerUpScroll(true);			}		}	},	mounted() {		// #ifdef MP-WEIXIN || APP-PLUS || H5		// 配置主动触发wxs显示加载进度的回调		this.mescroll.optDown.afterLoading = ()=>{			this.callProp = {callType: "showLoading", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)		}		// 配置主动触发wxs隐藏加载进度的回调		this.mescroll.optDown.afterEndDownScroll = ()=>{			this.callProp = {callType: "endDownScroll", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)			setTimeout(()=>{				if(this.downLoadType === 4 || this.downLoadType === 0){					this.callProp = {callType: "clearTransform", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)				}			},320)		}		// 初始化wxs的数据		this.wxsCall({type: 'setWxsProp'})		// #endif	}}export default WxsMixin;
 |