Extjs:强制组件重新渲染

Extjs: Force a component to re-render

本文关键字:新渲染 组件 Extjs      更新时间:2023-09-26

我在ExtJs中有一个自定义组件,这是一个表单字段(GridField)。它将网格显示为表单字段,并按预期工作。观察结果如下:

  1. 当表单单独呈现时(例如:在窗口或卡片布局的第一个面板中,一切都显示良好)

  2. 当表单不是卡片布局中的第一个面板或第一次呈现时隐藏时,字段名称显示,所需的空间保留,但控件不显示。

我做了一些检查,发现自定义组件实际上是渲染的,但所有html元素(div等)的宽度都是0。它们都有样式(宽度:0)。我的猜测是,这是因为表单面板在渲染完成时是不可见的。

在控制的实现方面,我扩展了Ext.form.field.Base。在initComponent中,我简单地调用this.on('afterrender', this.initControl)来运行渲染后附加控件的自定义代码。在这里,input字段被隐藏,网格被渲染到它应该在的地方。

我的问题是1. 如何强制控件重新渲染,使宽度不再为0?2. 如果当前的实现是错误的,那么使用网格或其他ext组件作为表单字段的正确方法是什么?

您是否尝试调用"布局"方法以确保正确重新应用尺寸?重新渲染在Extjs中并不常见,通常是由doLayout完成的。如果没有,可能是你的实现本身出了问题。