Javascript SapUI5弹出箭头未指向设置偏移后单击的从属元素

Javascript SapUI5弹出箭头未指向设置偏移后单击的从属元素,javascript,jquery,sapui5,popover,Javascript,Jquery,Sapui5,Popover,我使用的是sap.m.Popover,我有一个按钮,并将该按钮作为该Popover的从属元素。现在,如果我将offsetY设置为该Popover,则Popover将根据offsetY值移动,但指向从属元素的箭头将被移动,并且它也不会指向该元素。如何即使在添加offsetY之后,也要使popover指针指向依赖元素 更新: 我建议在问题注释中使用@boghyon的解决方案:将Popover的位置更改为placement=“Top” 如果改变位置不是一个选项,请使用我的原始解决方案。我不建议使用我的

我使用的是sap.m.Popover,我有一个按钮,并将该按钮作为该Popover的从属元素。现在,如果我将offsetY设置为该Popover,则Popover将根据offsetY值移动,但指向从属元素的箭头将被移动,并且它也不会指向该元素。如何即使在添加offsetY之后,也要使popover指针指向依赖元素

更新:

我建议在问题注释中使用@boghyon的解决方案:将Popover的位置更改为
placement=“Top”

如果改变位置不是一个选项,请使用我的原始解决方案。我不建议使用我的原始解决方案,因为它使用私有方法和直接CSS操作,但目前它是唯一的解决方案:

Popover组件本身不提供任何方法来设置arrow元素的偏移量。 可以使用以下选项重新定位箭头:

在调整了Popover位置后调用Hook

为此,在控制器事件处理程序函数中实例化popover片段后,将其添加到popover并重新定位箭头:(我假设
placement=“Right”
,因为offsetY)

视图:



根据

您的意思,指针应保持粘贴在按钮上,以便通过
offsetY
的值拉伸它?顺便说一句,上下文是什么?为什么首先需要更改偏移?popover藏了什么吗?@boghyon是的,我有一个表在页面的下半部分,在页面的顶部,按钮在上半部分的中间部分。所以一旦我打开弹出窗口,POPFOM就打开了,一半部分转到上半部,剩下一半的POFOVER进入页面的底部。因此,为了避免重叠,我必须设置偏移量并将其移到上半部分。指针也在移动。感谢您的解释。在这种情况下,将(而不是
offsetY
)更改为(例如)是否有意义?这样,弹出框就不会穿过页面的下半部分。@boghyon我已经更新了问题,因此如果我使用placement作为顶部,其余按钮将被阻止。因此,我必须通过保持正确的位置来移动弹出框。但是,如果我应用offsetY,则箭头也将向上移动,并且不再指向同一来源。我明白了。这看起来是一个合理的增强请求。试试看;)
var self = this;
this._oPopover =
    sap.ui.xmlfragment("sap.m.sample.Popover.Popover", this);

this._oPopover._afterAdjustPositionAndArrowHook = function() {
    var arrow = jQuery('#myPop-arrow');
    arrow.css('top', Math.max(21, parseInt(arrow.css('top')) -
        self._oPopover.getOffsetY()));
};

this.getView().addDependent(this._oPopover);
<Popover id="myPop" placement="Right" offsetY="100" ...>