【发布时间】:2016-06-25 03:57:35
【问题描述】:
我不明白为什么这段代码第一次运行:
var mypopup = Ext4.create('Suidgets.NSConfirmationBox', {
title: 'Delete',
message: 'Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>Do you want to delete this row? Do you want to delete this row? Do you want to delete this row?<br>',
id: 'mypopup',
listeners: {
afterrender: function() {
this.doComponentLayout();
}
}
});
mypopup.show();
这是小部件的代码: https://jsfiddle.net/ardimaunahan/63ofm68o/
我尝试了几个事件来触发doComponentLayout,但仍然无法生效:show、beforeshow、activate。但是,如果您通过浏览器控制台执行此操作,它会完美调整:
Ext4.getCmp('mypopup').doComponentLayout();
有人能告诉我为什么会这样吗?谢谢!
更新 1: 我检查了生成的 HTML 的差异,它在主窗口的高度和宽度上有所不同:
我想知道 Ext.window.Window 中是否有任何配置可用于修复此尺寸错误。
更新 2: 这是一个完全有效的小提琴:https://jsfiddle.net/ardimaunahan/hcg4p3v4。必须在浏览器上执行 Ctrl + F5 才能看到损坏的弹出布局。您还需要按 Esc 关闭弹出窗口。在 Firefox/Chrome 中,成功单击显示弹出按钮使布局正常,但在 IE 中仍然损坏。
【问题讨论】:
-
我尝试对窗口内的组件使用“tpl”,但结果相同。还检查了生成的html中的差异,只有窗口的高度和宽度不同(见上图)
-
仅使用提供的代码无法重现,我认为缺少 CSS。请制作一个显示问题的小提琴。
-
您可以尝试调用 doComponentLayout 两次或延迟 doComponentLayout 几毫秒是否有帮助。
-
感谢亚历山大的调查。我会尝试制作一个完整的小提琴,我也会尝试你的建议。
-
Alexander,两次调用 doComponentLayout 并没有解决它。我认为将 doComponentLayout 延迟几毫秒并不是一个好的用户体验。
标签: javascript extjs extjs4.2