ExtJS调试"[E]布局运行失败"(在自定义组件中)

rix*_*ixo 8 javascript extjs extjs4

我开发了一种自定义类型的组合框,它使用网格而不是标准的组合选择器(主要是为了从大量数据集的缓冲渲染中获益).我现在试图使它与Ext 4.2.1兼容,但我遇到了这个错误:

[E] Layout run failed
Run Code Online (Sandbox Code Playgroud)

请参阅测试用例的演示页面.每个组合都会引发一次错误,但只会在第一次扩展时引发错误.

4.2.0没有发生此错误(请参阅4.2.0的演示页).我在4.2.1中确定的重大变化是关于查询过滤器,而不是渲染或布局...但是,在网格选择器坐在一个情况下,我已经在4.2.0中面临这个错误窗口,但它在代码库中有很多覆盖,并使用了沙盒版本的Ext4 ...所以我只是跳了它不是来自我的组件并使其沉默(另一个演示页面证明了网格选择器+窗口不是足以触发错误).

这个错误似乎没有任何副作用,但它让我心疼.

有谁知道造成这种情况的原因,或者更好的是,必须采取哪些措施来防止它?

或者是否有人能够很好地理解Ext的布局引擎,以便就如何追踪此类错误提供一些建议?或者至少让我放心,在任何情况下错误都将无害?

Ale*_*rev 23

实际上,Grid面板布局失败了,因为它设置为收缩包装其内容,但在布局运行时没有内容.解决这个问题的最简单方法是在面板上设置一个宽度(这是你的选择器),因此它不会再尝试收缩包装.

请参阅我的拉取请求:https://github.com/rixo/GridPicker/pull/3

我还建议扩展Picker字段而不是Combobox,Combo会做很多你可能不需要的事情.看看我如何在我的MultiSelect ux中处理它:https://github.com/nohuhu/Ext.ux.form.field.MultiSelect

  • 我使用页面分析器示例来查找实际失败的布局,并从那里开始.我已经解决了许多布局问题,这绝对有帮助.:)老实说,我不记得我们在4.2.0中有什么了; 这是一个可怕的错误发布和许多事情曾经偶然工作.通过4.2.1,代码库稳定了,但我真的建议升级到4.2.2,因为有大量修复没有切入4.2.1. (2认同)