我正在运行的功能,需要关闭一场对话,如果它加载。我如何检查,如果一场对话是在跑?我是使用纯JavaScript和检查由id如果它是不确定?

if (dijit.byId("blah") !== undefined) { 
     destroyRecursive dijit;
}

或者我使用一种性对话的对象,如:

isFocusable method
isLoaded property
有帮助吗?

解决方案

对话提供了两种特性 你也许想检查: isLoadedopen.通过挖掘的代码,你会找到以下说明:

  • 开放:真的,如果对话是目前显示在屏幕上。
  • 加载:如果ContentPane有数据,或规定在初始化(通过href或内联的内容),或设置经attr('content',...)/attr('href',...)假如果它不具有任何内容,或者如果ContentPane仍然是进程中的下载href。

所以,你可能只是:

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();
  }
}

如果你想destory它以释放内存:

var dialog = dijit.byId('blah');
dialog.destory();

我认为destroy是递归的,因为它要求其父destroy方法及其亲本之一是dijit.layout.ContentPane

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top