From 1833709d192fccd6a43581e5d4994ca653d1d114 Mon Sep 17 00:00:00 2001 From: qiang Date: Wed, 25 Mar 2020 12:18:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=20app-v3=20cover-view?= =?UTF-8?q?=E3=80=81cover-image=20=E7=BB=84=E4=BB=B6=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E5=9C=A8=E8=87=AA=E5=AE=9A=E4=B9=89=E7=BB=84=E4=BB=B6=E5=86=85?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/platforms/app-plus/view/mixins/cover.js | 23 ++++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/platforms/app-plus/view/mixins/cover.js b/src/platforms/app-plus/view/mixins/cover.js index 1f4751d173..5710e2e4a1 100644 --- a/src/platforms/app-plus/view/mixins/cover.js +++ b/src/platforms/app-plus/view/mixins/cover.js @@ -17,12 +17,12 @@ export default { for (const key in this.position) { let val = this.position[key] let valNumber = parseFloat(val) - let parentValNumber = parseFloat(this.$parent.position[key]) + let parentValNumber = parseFloat(this._nativeParent.position[key]) if (key === 'top' || key === 'left') { val = Math.max(valNumber, parentValNumber) + 'px' } else if (key === 'width' || key === 'height') { const base = key === 'width' ? 'left' : 'left' - const parentStart = parseFloat(this.$parent.position[base]) + const parentStart = parseFloat(this._nativeParent.position[base]) const viewStart = parseFloat(this.position[base]) const diff1 = Math.max(parentStart - viewStart, 0) const diff2 = Math.max((viewStart + valNumber) - (parentStart + parentValNumber), 0) @@ -83,14 +83,21 @@ export default { return tags } }, + created () { + let $parent = this.$parent + while (!$parent.isNative && $parent !== this.$root) { + $parent = $parent.$parent + } + this._nativeParent = $parent + }, mounted () { this._updateStyle() - const $parent = this.$parent - if ($parent.isNative) { - if ($parent._isMounted) { + const $nativeParent = this._nativeParent + if ($nativeParent.isNative) { + if ($nativeParent._isMounted) { this._onCanInsert() } else { - $parent.onCanInsertCallbacks.push(() => { + $nativeParent.onCanInsertCallbacks.push(() => { this._onCanInsert() }) } @@ -111,7 +118,7 @@ export default { } }, beforeDestroy () { - if (this.$parent.isNative) { + if (this._nativeParent.isNative) { this.cover && this.cover.close() delete this.cover } @@ -132,7 +139,7 @@ export default { for (const key in this.position) { let val = this.position[key] if (key === 'top' || key === 'left') { - val = Math.min((parseFloat(val) - parseFloat(this.$parent.position[key])), 0) + 'px' + val = Math.min((parseFloat(val) - parseFloat(this._nativeParent.position[key])), 0) + 'px' } position[key] = val } -- GitLab