18 lines
		
	
	
		
			777 B
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			18 lines
		
	
	
		
			777 B
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								// 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
							 | 
						|||
| 
								 | 
							
								// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
							 | 
						|||
| 
								 | 
							
								// 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
							 | 
						|||
| 
								 | 
							
								// 值(默认为undefined),就是查找最顶层的$parent
							 | 
						|||
| 
								 | 
							
								export default function $parent(name = undefined) {
							 | 
						|||
| 
								 | 
							
									let parent = this.$parent;
							 | 
						|||
| 
								 | 
							
									// 通过while历遍,这里主要是为了H5需要多层解析的问题
							 | 
						|||
| 
								 | 
							
									while (parent) {
							 | 
						|||
| 
								 | 
							
										// 父组件
							 | 
						|||
| 
								 | 
							
										if (parent.$options && parent.$options.name !== name) {
							 | 
						|||
| 
								 | 
							
											// 如果组件的name不相等,继续上一级寻找
							 | 
						|||
| 
								 | 
							
											parent = parent.$parent;
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											return parent;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 |