我正在运行一个需要关闭 Dojo 对话框(如果已加载)的函数。如何检查 dojo 对话框是否正在运行?我是否使用纯 JavaScript 并通过 id 检查它是否未定义?
if (dijit.byId("blah") !== undefined) {
destroyRecursive dijit;
}
或者我是否使用对话框对象的属性,例如:
isFocusable method
isLoaded property
我正在运行一个需要关闭 Dojo 对话框(如果已加载)的函数。如何检查 dojo 对话框是否正在运行?我是否使用纯 JavaScript 并通过 id 检查它是否未定义?
if (dijit.byId("blah") !== undefined) {
destroyRecursive dijit;
}
或者我是否使用对话框对象的属性,例如:
isFocusable method
isLoaded property
Dialog 提供了两个您可能想要检查的属性isLoaded
:和open
. 通过挖掘代码,您会发现以下描述:
所以,你可以:
var dialog = dijit.byId("blah");
if( dialog.open ) {
dialog.destroy();
}
你想隐藏它还是摧毁它?
如果您只想显示/隐藏它,您可以执行以下操作:
var dialog = dijit.byId('blah');
if (dialog) {
if (dialog.open) {
dialog.hide();
}
else {
dialog.show();
}
}
如果您想破坏它以释放内存:
var dialog = dijit.byId('blah');
dialog.destory();
我认为destroy
是递归的,因为它调用它的父destroy
方法,而它的父方法之一是dijit.layout.ContentPane
.