ion-popover 在 ion-modal 上的位置
position of ion-popover over ion-modal
我正在尝试在已打开的模式中显示信息弹出框。
但是,弹出窗口不会显示在正确的位置。即使将事件传递给 popoverController,位置也不正确。
是否可以在信息按钮下方显示弹出窗口?
模式中的代码,我称之为弹出窗口的地方:
const popoverElement = Object.assign(document.createElement('ion-popover'), {
component: 'info-popover',
event: event,
});
document.body.appendChild(popoverElement);
return await popoverElement.present();
上面的 Popover 截图:
编辑
这就是 DOM 的样子。如您所见,模态附加到 body
> app-root
> ion-app
。弹出窗口仅附加到 body
编辑 2
关闭模板中的阴影 DOM 可以解决这个问题,但我不想这样做。
@Component({
tag: "component",
styleUrl: "component.css",
shadow: false
})
问题似乎是点击事件的 target
属性 是隐藏的父级,而不是被点击的项目本身,所以它 sets the wrong popover position.
由于您手动传递事件,解决方法是手动设置 target
。但是因为它是只读字段,所以您需要使用 Object.defineProperty
(替换 theClickedElement
):
Object.defineProperty(event, 'target', {value: theClickedElement})
const popoverElement = Object.assign(document.createElement('ion-popover'), {
component: 'info-popover',
event: event,
});
我正在尝试在已打开的模式中显示信息弹出框。 但是,弹出窗口不会显示在正确的位置。即使将事件传递给 popoverController,位置也不正确。
是否可以在信息按钮下方显示弹出窗口?
模式中的代码,我称之为弹出窗口的地方:
const popoverElement = Object.assign(document.createElement('ion-popover'), {
component: 'info-popover',
event: event,
});
document.body.appendChild(popoverElement);
return await popoverElement.present();
上面的 Popover 截图:
编辑
这就是 DOM 的样子。如您所见,模态附加到 body
> app-root
> ion-app
。弹出窗口仅附加到 body
编辑 2
关闭模板中的阴影 DOM 可以解决这个问题,但我不想这样做。
@Component({
tag: "component",
styleUrl: "component.css",
shadow: false
})
问题似乎是点击事件的 target
属性 是隐藏的父级,而不是被点击的项目本身,所以它 sets the wrong popover position.
由于您手动传递事件,解决方法是手动设置 target
。但是因为它是只读字段,所以您需要使用 Object.defineProperty
(替换 theClickedElement
):
Object.defineProperty(event, 'target', {value: theClickedElement})
const popoverElement = Object.assign(document.createElement('ion-popover'), {
component: 'info-popover',
event: event,
});