mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	
		
			
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 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;
							 |