link
link
**解决思路**:把popper的dom直接塞进主应用的body中,判断定位和显示边界也直接以主应用作为左边起点,这样的效果就和正常在项目中使用appendToBody的效果一致,代码改动也非常的少。 因为公司内部使用的组件库是基于element-ui进行封装的,所以直接在源码上进行更改了。 如果不能直接修改element-ui的源码,明确修改代码位置后,可以使用js-loader或者项目build之前修改node_modules代码。 以下代码目录都是基于element-ui源码的目录,对应在node_modules中的地址是`lib/utils`。 `src/utils/vue-popper` ```js // 源码 this.appendToBody && document.body.appendChild(this.popperElm); ``` ```js // 修改后 if (this.appendToBody) { if (window.__POWERED_BY_WUJIE__) { window.parent.document.body.appendChild(this.popperElm); } else { document.body.appendChild(this.popperElm); } } ``` `src/utils/popper.js`...
处理`element-ui`中子应用内打开的 popover 的弹层,点击子应用内的非自身会关闭,但是点击基座应用范围不会关闭。 解决思路修改组件库源码:` src/utils/clickoutside.js`(对应打包后的地址是`lib/utils`)。这个文件就是处理所有弹出框,点击外部关闭的指令。 ```js !Vue.prototype.$isServer && on(document, 'mousedown', e => (startClick = e)); !Vue.prototype.$isServer && on(document, 'mouseup', e => { nodeList.forEach(node => node[ctx].documentHandler(e, startClick)); }); // ===== 新增部分=====...