[英]Unregistering On-Execute Action on a Confirm Dialog in Dojo
我有一個dojo小部件,如下所示:
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
。 最初將其配置為on-execute
調用Func1
。 然后顯示Dialog
。
但是,如果用戶在30秒鍾內不執行任何操作,則on-execute
操作將更改為調用Func2
。
我的問題是,當用戶在30秒后單擊時,不僅調用了Func2
,還調用了Func1
和Func2
。
如果執行時間在30秒之后,如何取消注冊,以便僅調用Func2
?
來自文檔“ on()
的返回值提供了一種可用於從事件中刪除事件偵聽器的方法。”
例如:
require(["dojo/on", "dojo/_base/window"], function(on, win){
var signal = on(win.doc, "click", function(){
// remove listener after first event
signal.remove();
// do something else...
});
});
因此,一旦調用function1,就可以使用處理程序(信號)將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.