UNPKG

press-ui

Version:

简单、易用的跨端组件库,兼容 Vue2 和 Vue3,同时支持 uni-app和普通 Vue 项目

49 lines (41 loc) 944 B
function getElement(selector) { if (typeof selector === 'string') { return document.querySelector(selector); } return selector(); } export function PortalMixin({ ref, afterPortal } = {}) { return { // #ifdef H5 props: { getContainer: [String, Function], }, watch: { getContainer: 'portal', }, mounted() { if (this.getContainer) { this.portal(); } }, methods: { portal() { const { getContainer } = this; const el = ref ? this.$refs[ref] : this.$el; let container; if (getContainer) { container = getElement(getContainer); } else if (this.$parent) { container = this.$parent.$el; } if (container && container !== el.parentNode) { container.appendChild(el); } if (afterPortal) { afterPortal.call(this); } }, }, // #endif }; }