You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 lines
777 B

3 years ago
  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. }