保留页面的滚动位置
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
无效
我有一个包含很多元素的页面(表单和 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
无效