[英]Extjs: Force a component to re-render
我在ExtJs中有一个自定义组件,它是一个表单字段(GridField)。 它将网格显示为表单字段并按预期工作。 观察结果如下:
单独呈现表单时(例如,在窗口或卡片布局中的第一个面板中,一切都显示正常)
如果表单不是卡片布局中的第一个面板或在第一次呈现时隐藏,则显示字段名称并保留所需的空间但控件不显示。
我做了一些检查,发现实际渲染了自定义组件,但所有html元素(div等)的宽度都是0.它们都有样式(宽度:0)。 我的猜测是因为表单面板在渲染完成时不可见。
在控件的实现方面,我扩展了Ext.form.field.Base
。 在initComponent
,我只需调用this.on('afterrender', this.initControl)
来在渲染后运行附加控件的自定义代码。 这里input
字段被隐藏,网格呈现在它应该的位置。
我的问题是1.如何强制控件重新渲染,使宽度不再为0? 2.如果当前实现错误,使用网格或其他ext组件作为表单字段的正确方法是什么?
您是否尝试调用“doLayout”方法以确保正确重新应用维度? 重新渲染在Extjs中并不常见,通常doLayout可以解决问题。 如果没有,那么您的实现本身可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.