我正在处理ExtJs 4并且在网格上双击事件时出现问题显示模态窗口。
在网格组件上定义的侦听器:
"listeners": {
"itemdblclick": function() {
var win =Ext.getCmp('myCmp');
win.myWindow.show();
}
}
以前定义的myCmp属性是一个窗口组件: (我使用了父容器对象myCmp作为生成javascript以构建ExtJs配置的代码)
myCmp.myWindow = Ext.create('Ext.window.Window',{
"layout": "fit",
"items": [
....
],
"title": "Hello Window",
"width": "300",
"height": "300",
"id": "myWindow"
});
逻辑运行良好,我双击网格,窗口对象存在(myCmp.myWindow)但是当我调用show()时窗口显示的非常小(6px x 6px)。
如果我将处理程序更改为:
Ext.create('Ext.window.Window',{
"layout": "fit",
"items": [
....
],
"title": "Hello Window",
"width": "300",
"height": "300",
"id": "myWindow"
}).show();
一切正常。显然这是在创建一个新的窗口实例。
有什么想法吗?我这样做了吗?
提前致谢
SAM
答案 0 :(得分:4)
为什么在直接引用窗口时会引用“myCmp”?
var win = Ext.getCmp('myWindow');
win.show();
这应该有效。另外,为什么要在其他地方实例化一个窗口然后再使用它?在需要时创建实例并在使用后将其销毁会不会更好?
此外,您应该正确配置窗口。宽度和高度是数字字段而不是字符串。请参阅api文档和示例以了解如何正确配置对象。你应该使用以下窗口:
Ext.create('Ext.window.Window',{
layout: 'fit',
items: [
....
],
title: 'Hello Window',
width: 300,
height: 300,
id: 'myWindow'
}).show();