在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时,Func1Func2都会被调用。

如何取消注册,以便只有在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(确认/取消)以让用户确认是不是切换开/关状态

Dojo声明ConfirmDialog隐藏取消按钮

html编写代码如何在关闭网页时弹出确认对话框!点击确认关闭,取消不关闭

在没有确认对话框的情况下取消下拉列表的更改事件

Zend 框架中的 Dojo 对话框错误

ConfirmCancelDialog确认取消对话框