在Dojo中的确认对话框上取消注册On-Execute操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Dojo中的确认对话框上取消注册On-Execute操作相关的知识,希望对你有一定的参考价值。
我有一个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
。它最初配置为调用Func1
on-execute
。然后显示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,就可以使用处理程序(信号)将其删除。
以上是关于在Dojo中的确认对话框上取消注册On-Execute操作的主要内容,如果未能解决你的问题,请参考以下文章
android开发中switch在切换开/关状态时,先弹出一个dialog(确认/取消)以让用户确认是不是切换开/关状态