| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- /**
 
-  * mescroll-body写在子组件时,需通过mescroll的mixins补充子组件缺少的生命周期:
 
-  * 当一个页面只有一个mescroll-body写在子组件时, 则使用mescroll-comp.js (参考 mescroll-comp 案例)
 
-  * 当一个页面有多个mescroll-body写在子组件时, 则使用mescroll-more.js (参考 mescroll-more 案例)
 
-  */
 
- const MescrollMoreMixin = {
 
- 	data() {
 
- 		return {
 
- 			tabIndex: 0 // 当前tab下标
 
- 		}
 
- 	},
 
- 	// 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
 
- 	onPageScroll(e) {
 
- 		let mescroll = this.getMescroll(this.tabIndex);
 
- 		mescroll && mescroll.onPageScroll(e);
 
- 	},
 
- 	onReachBottom() {
 
- 		let mescroll = this.getMescroll(this.tabIndex);
 
- 		mescroll && mescroll.onReachBottom();
 
- 	},
 
- 	// 当down的native: true时, 还需传递此方法进到子组件
 
- 	onPullDownRefresh(){
 
- 		let mescroll = this.getMescroll(this.tabIndex);
 
- 		mescroll && mescroll.onPullDownRefresh();
 
- 	},
 
- 	methods:{
 
- 		// 根据下标获取对应子组件的mescroll
 
- 		getMescroll(i){
 
- 			if(!this.mescrollItems) this.mescrollItems = [];
 
- 			if(!this.mescrollItems[i]) {
 
- 				// v-for中的refs
 
- 				let vForItem = this.$refs["mescrollItem"];
 
- 				if(vForItem){
 
- 					this.mescrollItems[i] = vForItem[i]
 
- 				}else{
 
- 					// 普通的refs,不可重复
 
- 					this.mescrollItems[i] = this.$refs["mescrollItem"+i];
 
- 				}
 
- 			}
 
- 			let item = this.mescrollItems[i]
 
- 			return item ? item.mescroll : null
 
- 		},
 
- 		// 切换tab,恢复滚动条位置
 
- 		tabChange(i){
 
- 			let mescroll = this.getMescroll(i);
 
- 			if(mescroll){
 
- 				// 延时(比$nextTick靠谱一些),确保元素已渲染
 
- 				setTimeout(()=>{
 
- 					mescroll.scrollTo(mescroll.getScrollTop(),0)
 
- 				},30)
 
- 			}
 
- 		}
 
- 	}
 
- }
 
- export default MescrollMoreMixin;
 
 
  |