ExtJS:导致错误的第二个模式窗口:未捕获类型错误:无法读取属性';addCls';空的
我得到了以下错误:“uncaughttypeerror:无法读取null的属性'addCls' 我需要两个模态窗口。第一个模态窗口有一个网格。当我双击第一个模态窗口中的网格时,我应该打开第二个模态窗口。下面是我使用的代码:ExtJS:导致错误的第二个模式窗口:未捕获类型错误:无法读取属性';addCls';空的,extjs,extjs4.1,Extjs,Extjs4.1,我得到了以下错误:“uncaughttypeerror:无法读取null的属性'addCls' 我需要两个模态窗口。第一个模态窗口有一个网格。当我双击第一个模态窗口中的网格时,我应该打开第二个模态窗口。下面是我使用的代码: saleOrderEmployeeGrid.on('celldblclick', function(tableview, td, cellIndex, record, tr, rowIndex, e, eOpts){ loadActivityWindow();
saleOrderEmployeeGrid.on('celldblclick', function(tableview, td, cellIndex, record, tr, rowIndex, e, eOpts){
loadActivityWindow();
});
}
function loadActivityWindow()
{
jobSlotActivityWin = new Ext.Window({
id :'jobSlotActivityWinId',
modal : true,
layout : 'fit',
width : 900,
height : 500,
closeAction :'destroy',
plain : true,
model : true,
stateful : false,
title :'Create Job Slot',
items : [soActivityPanel],
buttons : [{
text : 'Close',
handler : function(){
jobSlotActivityWin.destroy();
}
}
]
});
jobSlotActivityWin.show();
Ext.WindowManager.register (createJobSlotWin); // createJobSlotWin is the first modal window
Ext.WindowManager.register(jobSlotActivityWin); // jobSlotActivityWin is the second modal window created above
Ext.WindowManager.bringToFront ('jobSlotActivityWinId');
}
因此,当我双击saleOrderEmployeeGrid时,我可以看到第二个模式窗口。然后关闭第二个模态窗口,在第一个模态窗口上再次双击网格
现在不会显示第二个模态窗口。它在第一个模态窗口的背景中完全被屏蔽和空白,我在JavaScript控制台中看到以下错误:
未捕获的TypeError:无法读取null的属性“addCls”
更准确地说,错误似乎来自jobsloticvitywin.show(),因为我的调试日志当时失败了
以前有人遇到过这种情况,可以帮助我吗?将closeAction设置为隐藏,不确定默认值为何为destroy,但它的基本意思是当窗口关闭时,元素将从dom中删除,并且
show
将不再工作
对评论的答复:
条件创建示例
//the window is only created once, the data is always show and updated.
if(!this.win) {
this.win = createWindow();
}
updateWindowData();
this.win.show();
不要说closeAction:“到处隐藏”,我们在源代码中有类似的内容
Ext.override(Ext.Window, {
closeAction: 'hide'
})
如果在创建任何窗口之前放置该代码段,默认情况下,所有窗口都将被关闭操作隐藏。set
closeAction:'hide',
onEsc: funtion() {
jobSlotActivityWin.hide()
}
@Rajugadu是的,它不会工作,因为您的处理程序正在直接调用
destroy
。它应该调用close
。此外,全局、硬编码id和不检查窗口是否存在的盲创建也是错误的<代码>新窗口,新窗口具有相同id的将抛出一个错误,我相信。@Rajugadu有条件地创建并取出销毁
“应该”解决您看到的问题。@Rajugadu所有窗口都必须将closeAction设置为隐藏,默认设置为销毁。窗口只应创建一次,但每次都应更新数据。我将放一个额外的代码片段来说明我在说什么。保持实例的活动性并不比在客户机上执行的任何其他操作更危险。这是首选的方法,效率更高。@Rajugadu在创建任何窗口之前,取出所有包含closeAction的代码,并将Ext.Override
片段放在代码的“顶部”。@Rajugadu关于WindowManager的最后3行没有也不应该使用,Ext应该处理这个问题。