dojo类函数覆盖按钮单击

时间:2018-02-12 20:41:01

标签: javascript dojo

我正在尝试向dojo类中的函数添加一个动作。

打开页面时加载的基类示例。

dojo.provide("nusw.winMgr");
dojo.declare("nusw.winMgr", null, {

constructor: function......

open: function(parm){
   alert("This is the default action of the class");
  }
});

我想改变open函数的行为,这样当它被调用时,无论何时调用它都会调用另一个函数+默认的映射函数。

对于这个例子,我想将以下函数添加到默认的open函数中。

function alert2(){
alert("This is the updated open function class");
}

我期待结果

警告消息:这是更新的开放函数类

警告消息:这是类

的默认操作

这些函数比这里给出的例子更复杂,但这正是我想要弄清楚的。

我希望能够在用户单击按钮时调用此脚本来更新默认的类函数,这样我就可以将逻辑放在javascript函数中。

我是dojo的新手

2 个答案:

答案 0 :(得分:0)

事实上,在dojo中的Javascript,您可以随时将动态回调函数附加到事件,因此这里会将动态回调函数附加到窗口小部件的open事件中。

在此函数中,您可以稍后编写要编写的任何新逻辑,甚至可以调用另一个function,然后只更新第二个函数。

这就是你可以做的例子:

var secondFunction = function secondFunction() {
  alert("This is another logic added");
}
var openCallback = function openCallback(param) {
  alert("This is the default action of the class");
  secondFunction();
}

//Then in your widget
dojo.declare("nusw.winMgr", null, {
   constructor: function......
   open: openCallback()
});

答案 1 :(得分:0)

尝试dojo/aspekt来完成此任务。它可能看起来像:

require(["dojo/aspect"], function(aspect){
    aspect.after(baseClassInstance, "open", function(){
        alert("This is the updated open function class");
    });
});

require(["dojo/aspect"], function(aspect){
    aspect.before(baseClassInstance, "open", function(){
        alert("This is the updated open function class");
    });
});