| // 定义在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 || MP-QQ || 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 | 
|                 // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如<me-video>中 | 
|                 this.$set(this.mescroll, 'downLoadType', this.downLoadType) | 
|                 // 重置是否加载成功的状态 | 
|                 this.$set(this.mescroll, 'isDownEndSuccess', null) | 
|             }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 || MP-QQ || 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的方法 (值改变才触发更新) | 
|             let delay = 300 + (this.mescroll.optDown.beforeEndDelay || 0) | 
|             setTimeout(()=>{ | 
|                 if(this.downLoadType === 4 || this.downLoadType === 0){ | 
|                     this.callProp = {callType: "clearTransform", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) | 
|                 } | 
|                 // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如<me-video>中 | 
|                 this.$set(this.mescroll, 'downLoadType', this.downLoadType) | 
|             }, delay) | 
|         } | 
|         // 初始化wxs的数据 | 
|         this.wxsCall({type: 'setWxsProp'}) | 
|         // #endif | 
|     } | 
| } | 
|   | 
| export default WxsMixin; |