guangchao.xu | 070005a | 2020-12-07 09:56:40 +0800 | [diff] [blame] | 1 | // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法 |
| 2 | // this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx |
| 3 | // 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name |
| 4 | // 值(默认为undefined),就是查找最顶层的$parent |
| 5 | export default function $parent(name = undefined) { |
| 6 | let parent = this.$parent; |
| 7 | // 通过while历遍,这里主要是为了H5需要多层解析的问题 |
| 8 | while (parent) { |
| 9 | // 父组件 |
| 10 | if (parent.$options && parent.$options.name !== name) { |
| 11 | // 如果组件的name不相等,继续上一级寻找 |
| 12 | parent = parent.$parent; |
| 13 | } else { |
| 14 | return parent; |
| 15 | } |
| 16 | } |
| 17 | return false; |
| 18 | } |