/** * 获取当前页面上下文 * @returns 页面对象 */ export function getContext() { // eslint-disable-next-line no-undef const pages = getCurrentPages() return pages[pages.length - 1] } /** * 获取上下文中指定节点组件 * @param context 选择器的选择范围,可以传入自定义组件的 this 作为上下文 * @param selector 自定义节点选择器 */ export function getComponent(context, selector ) { let component = null // #ifdef H5 context.$children.forEach((child) => { if (`#${child.$attrs.id}` === selector) { component = child } else if (child.$children && child.$children.length) { if (getComponent(child, selector)) { component = getComponent(child, selector) } } if (component) { return component } }) // #endif // #ifdef MP-WEIXIN component = context.selectComponent && context.selectComponent(selector) && context.selectComponent(selector).$vm // #endif // #ifdef MP-ALIPAY const alipay = context.$children ? context.$children : context.$vm && context.$vm.$children ? context.$vm .$children : [] component = alipay.find((component) => { return `#${component.$scope.props.id}` === selector }) // #endif // #ifdef APP-PLUS const app = context.$children ? context.$children : context.$vm && context.$vm.$children ? context.$vm.$children : [] component = app.find((component) => { return `#${component.$attrs.id}` === selector }) // #endif return component }