mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +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; |