イベントの委任を使用して、ダイアログをそのままにしておくことができます。これがあなたが説明することを達成するための例です。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のドキュメントを参照してください...