我正在将应用程序从 ExtJS 3.x 迁移到 v4,并且由于“autoHeight”属性已被删除,TabPanel 出现了一些问题。我知道,如果您没有明确定义面板的高度,则假定为“自动高度”,但这仅在一定程度上是正确的。
在 ExtJS4 中,没有设置高度的选项卡面板仍然会在选项卡面板的包含 div 上设置内联 css 高度值,并且这些高度是根据每个选项卡项内容的初始高度计算的。是的,如果您更新选项卡项的任何子组件的高度,则将重新计算选项卡的高度以适应它,或者如果选项卡包含原始 HTML 并且选项卡的 update() 方法用于更改该内容,它的高度再次,将被调整以适应。
无论如何,在我的应用程序中,问题在于我使用非 ExtJS 框架中的方法(例如 jQuery.html())更新了这些选项卡的原始 HTML 内容。由于没有通知选项卡面板对内容的此更改,因此它不会重新计算选项卡的高度值。
为了解决这个问题,我要做的就是确保选项卡面板的包含元素在渲染、重新渲染或其他任何内容时始终设置为 height:auto。我假设要实现这一点,我需要扩展 TabPanel,但我不知道从哪里开始,至于要覆盖的方法等。有什么想法吗?