我有一个切换按钮:
var button = new Ext.Button({
tooltip: "Интенсивность",
iconCls: "gxp-icon-intensity",
enableToggle:true,
toggleHandler: function (button, state) {
if(state){
alert(state)
map.getLayersByName("Интенсивность")[0].setVisibility(true);
intWin.show();
}else{
map.getLayersByName("Интенсивность")[0].setVisibility(false);
alert(intWin.collapsed);
//intWin.close();
}
}
});
当切换按钮时,我会显示一个窗口:
var intWin = new Ext.Window({
id: 'intWin',
layout: 'fit',
title:'Интенсивность',
autoScroll:false,
width:300,
items:[/*intForm*/]
});
当我关闭窗口时,按钮不会切换。但当我再次点击它时,我没有窗口。 Firebug显示此错误:
TypeError: b.dom is undefined
...String(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);g.params...
这里有什么不妥?
更新
哦,我的坏人。我试图展示一个被破坏的元素。但在这种情况下:
1当我关闭窗户并被摧毁时,此窗口中的任何形式也将被销毁?
2如何检查窗口是否被破坏?
UPDATE2
现在我尝试使用此功能创建窗口:
function intWinCreate(){
var intWin = new Ext.Window({
id: 'intWin',
layout: 'fit',
title:'Интенсивность',
autoScroll:false,
width:300,
items:[/*intForm*/]
});
};
并在按钮处理程序中:
intWinCreate();
intWin.show();
但是我收到了一个错误:
ReferenceError: intWin is not defined
如果我将intWin.show();
放入该功能,那么该窗口会显示。
什么可能是错的?
答案 0 :(得分:4)
当元素被破坏时,其中的所有内容也会被破坏。
在您的情况下,您通过设置属性closeAction: 'hide'
来更改要隐藏的关闭操作的默认行为,它将导致窗口隐藏而不是被销毁。
例如:
var intWin = new Ext.Window({
id: 'intWin',
layout: 'fit',
closeAction: 'hide',
title:'Интенсивность',
autoScroll:false,
width:300,
items:[/*intForm*/]
});
更新:
这是因为intWin
是方法intWinCreate
中的局部变量。你可以做的是从方法返回窗口并调用show。
function intWinCreate(){
return new Ext.Window({
id: 'intWin',
layout: 'fit',
title:'Интенсивность',
autoScroll:false,
width:300,
items:[/*intForm*/]
});
};
然后
intWinCreate().show()
答案 1 :(得分:1)
<强>更新强>
我看到你已经有一件衣服,但我也有另一件衣服;) 只要你设置
id: 'intWin'
您可以使用
从任何地方访问此窗口Ext.getCmp()
所以你可以用它来表明:
Ext.getCmp('intWin').show()