33 lines
		
	
	
		
			890 B
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			890 B
		
	
	
	
		
			JavaScript
		
	
	
| module.exports = {
 | ||
| 	data() {
 | ||
| 		return {}
 | ||
| 	},
 | ||
| 	onLoad() {
 | ||
| 		// getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出
 | ||
| 		this.$u.getRect = this.$uGetRect
 | ||
| 	},
 | ||
| 	methods: {
 | ||
| 		// 查询节点信息
 | ||
| 		// 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)
 | ||
| 		// 解决办法为在组件根部再套一个没有任何作用的view元素
 | ||
| 		$uGetRect(selector, all) {
 | ||
| 			return new Promise(resolve => {
 | ||
| 				uni.createSelectorQuery().
 | ||
| 				in(this)[all ? 'selectAll' : 'select'](selector)
 | ||
| 					.boundingClientRect(rect => {
 | ||
| 						if (all && Array.isArray(rect) && rect.length) {
 | ||
| 							resolve(rect)
 | ||
| 						}
 | ||
| 						if (!all && rect) {
 | ||
| 							resolve(rect)
 | ||
| 						}
 | ||
| 					})
 | ||
| 					.exec()
 | ||
| 			})
 | ||
| 		}
 | ||
| 	},
 | ||
| 	onReachBottom() {
 | ||
| 		uni.$emit('uOnReachBottom')
 | ||
| 	}
 | ||
| }
 |