保留页面的滚动位置

Preserve the scroll position of a Page

我有一个包含很多元素的页面(表单和 tables) 当我想在 table 中添加一行时,我将页面滚动到 table,然后按一个按钮添加一行,在弹出窗口中编辑信息,然后按确定。

然后我在模型中插入新行并 refresh() 模型。 此时页面自动滚动到顶部,但我不想要这种行为! 我希望页面保持在相同的 Y 位置! 我看到 sap.m.page 有 scrollTo 函数 https://openui5.hana.ondemand.com/docs/api/symbols/sap.m.Page.html#scrollTo 但我不知道如何在 refresh()

之前占据位置

不幸的是,该页面没有 API 来获取当前滚动位置,但我们考虑这个想法是个好主意。

作为一种解决方法,您可以访问页面的某些私有方法 - 但前提是您接受它与未来版本的 UI5 中断的风险: page.getScrollDelegate().getScrollTop() 为了使其更安全,您应该在调用它们之前验证这两种方法是否存在,并检查返回值的合理性。那么你就很安全了,在最坏的情况下它会在未来的某个 UI5 版本中再次滚动到顶部。

您必须在 scrollTo 函数中填写 iTime 参数 - 例如srollTo(100, 1) - 然后就可以了 将 0 用于 iTime 无效