У меня есть виджет додзё, как показано ниже:
define("myWidget/AnExperiment", [
"dojo/_base/declare",
"dojo/dom-style",
"dijit/ConfirmDialog",
"dijit/_WidgetBase"
], function(declare, domStyle, ConfirmDialog, _WidgetBase) {
return declare([_WidgetBase], {
myDialog: null,
createDialog: function() {
self = this;
self.myDialog = new ConfirmDialog({
title: 'MyDialog',
content: 'This is my Dialog.',
closable: false
});
domStyle.set(myDialog.cancelButton.domNode, "display", "none");
self.myDialog.on("execute", function() {
console.log('Func1 called');
self.myFunc1();
});
self.myDialog.show();
setTimeout(function() {
self.changeDialogAction();
}, 30000);
}
changeDialogAction: function () {
var self = this;
self.myDialog.set("title", 'Changed MyDialog');
self.myDialog.set("content", 'This is the changed dialog');
// WHAT DO I DO HERE TO UN-REGISTER OLD ON-EXECUTE ACTION
self.myDialog.on("execute", function() {
console.log('Func2 called');
self.myFunc2();
});
},
myFunc1: function() {
console.log('This is func1');
},
myFunc2: function() {
console.log('This is func2');
}
}
При вызове createDialog
создается ConfirmDialog
.Изначально он настроен на вызов Func1
on-execute
.Затем отображается Dialog
.
Однако, если пользователь ничего не делает в течение 30 секунд, действие on-execute
изменяется на вызов Func2
.
Моя проблема в том, что когда пользователь щелкает через 30 секунд, вместо того, чтобы просто Func2
получить вызов, вызываются и Func1
, и Func2
.
Как мне отменить регистрацию , чтобы вызывать только Func2
, если выполнение происходит через 30 секунд?