面板折叠 ExtJS 上的 HTMLEditor 文本区域丢失数据

Posted

技术标签:

【中文标题】面板折叠 ExtJS 上的 HTMLEditor 文本区域丢失数据【英文标题】:Lost data of HTMLEditor textarea on Panel Collapse ExtJS 【发布时间】:2012-12-25 10:19:33 【问题描述】:

我正在使用 Ext 3.4 制作带有一些表单的应用程序。

我在 Ext.panel 中有一个表单,折叠属性设置为 true,因为我希望它是可折叠的。

使用 ExtJS 3.4 提供的加载方法将来自 DataBase 的数据加载到我的表单中。

问题是,当面板在被用户折叠后“展开”时,属于 HTMLEditor 小部件的文本区域已被清空。

为了解决这个问题,我可以在面板以某种方式展开时将数据重新加载到表单中,但我知道这不是最好的方法(最好的方法是在折叠面板时不丢失数据)。

如果有人遇到过这个问题或有人知道解决这个问题的方法,请分享此信息。我将不胜感激。

【问题讨论】:

【参考方案1】:

在Ext JS中,面板折叠是通过样式(显示、可见性或偏移)隐藏它的主体来实现的,默认情况下展开/折叠后绝对不会清除内部面板数据。你使用普通的 Ext JS 吗?

尝试诊断为什么会发生这种情况 - 最好的方法是附加 Ext 的调试版本,并逐步执行展开/折叠方法。

您还可以检查是否有任何侦听器附加到beforecollapsecollapsebeforeexpandexpand 事件。您可以通过查看面板的events 属性来做到这一点。例如:console.log(panel.events.collapse.listeners)

您可以做的另一件事是将处理程序附加到onreset 事件,以查看是否调用了表单上的reset。附加监听器的代码:formPanel.getForm().el.on('reset', function() alert('reset'); );

【讨论】:

我已经意识到这个问题只出现在属于 htmlEditor 的 textarea 包含在可折叠面板中,所以我修改了帖子。谢谢【参考方案2】:

我尝试了很多方法来解决这个问题,但无论如何都不起作用。

最后,我查找了Ext.panel.Panel的所有属性,找到了一个名为collapseMode的属性。所以我将collapseMode:'header'添加到面板中,htmleditor中的数据不会再丢失了。

我的代码:

                xtype: 'panel',
                region: 'south',
                itemId: 'remarkWrap',
                height: 140,
                //style: 'margin-top:10px;',
                layout: 'fit',
                title: 'title',
                collapsible: true,
                plain: true,
                hideMode: 'offsets',
                resizable:
                    handles:'n',
                    minHeight: 140,
                    maxHeight:500,
                    pinned:true,
                ,
                titleCollapse : true,
                collapseMode:'header',
                items: [
                    xtype: 'htmleditor',
                    itemId: 'remarkInput',
                    labelAlign: 'top',
                    inputAttrTpl: "spellcheck='false'",
                    readOnly : true
                ]

【讨论】:

以上是关于面板折叠 ExtJS 上的 HTMLEditor 文本区域丢失数据的主要内容,如果未能解决你的问题,请参考以下文章

打开 extjs 时折叠的面板不会创建滚动

ExtJS可折叠面板在展开时不呈现工具栏?

如何根据条件在可折叠面板中设置折叠值?-EXTJS

Extjs 手风琴动态关闭所有面板

Extjs HtmlEditor - 编号列表和项目符号列表

如何在 Extjs4 表单中填写 HtmlEditor xtype