Extjs:强制组件重新渲染

时间:2014-03-15 10:02:58

标签: javascript extjs extjs4 extjs4.2

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

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

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

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

    在控制的实施方面,我正在扩展Ext.form.field.Base。在initComponent中,我只需调用this.on('afterrender', this.initControl)即可在渲染后运行其他控件的自定义代码。这里input字段被隐藏,网格呈现在它应该的位置。

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

1 个答案:

答案 0 :(得分:3)

您是否尝试调用“doLayout”方法以确保正确重新应用尺寸?重新渲染在Extjs中并不常见,通常doLayout可以解决问题。如果没有,那么您的实现本身可能会有所不同。