您可以使用事件委托并保持对话不变。这是一个实现您所描述的示例。只需将 a 在您的 html 中并运行以下命令:
require(["dojo/_base/window", "dijit/Dialog", "dojo/on", "dijit/form/Button"],
function(win, Dialog, on, Button){
var dialogInstance = new Dialog({
innerHTML : "Hello world !"
});
on(win.body(), "._underlay:click", function(evt){
dialogInstance.hide();
});
var btn = new Button({
label : "Show Dialog",
onClick : function(evt) {
dialogInstance.show();
}
},"btn1");
});
但是,如果您仍想扩展 dijit/Dialog,您可以执行以下操作(例如在 MyDialog.js 等文件中):
define(["dojo/_base/declare", "dijit/DialogUnderlay"],
function(declare, DialogUnderlay) {
return declare(DialogUnderlay, {
myCustomDialogProperty : foo
// other customizations [...]
});
});
有关其他选项,请参阅dojo/_base/declare的文档...