javascript,dojo,在带有附件的jsp中构建对话框

问题描述

|| 我在dojo对话框中使用闭包来防止函数和变量冲突。 我有一个包含复杂对话框的jsp页面。它主要在工作。只是一个非常烦人的细节。如果窗口小部件更改,如何通知处理程序方法?我们希望将对话框的大部分Java脚本保留在闭包内。 由于弹出窗口出现在多个位置,因此我希望将来的程序员能够用任何东西替换myVar。有没有一种方法可以确定正确放置在onChange中的内容 ------ jsp页面----- var myVar = new MyNewPopupStuff(42); myVar.contstrucDialog(); ...... includeTemplate template = \“ myDialog.jsp \” ..... -------- myDialog.jsp ---- <脚本类型= \“ text / javascript \” src = \“ my.js \” /> .....
<\\ / div> .... -------- my.js文件---- 函数MyNewPopupStuff(param){      this.contstrucDialog = function()      .......      同时(要添加更多小部件){            fieldHolder = dojo.byId(\“ myDialogData \”      addWidget(widgetName,myDialogData);      }      addWidget = function(fieldHolder,widgetName){      //需要在\“ myVar.bar()\”中打印变量的名称(myVar或其他可能的值)      dojo.place(newLabel,fieldHolder);         var newField = new dijit.form.ValidationTextBox({         id:\“ i \” + contactTypeId,         名称:widgetName,         价值:价值,         修剪:是的,        ** onChange:** ??????当小部件被修改时,我想调用下面的ModifyOnChange而不是其他一些对修改修改,我想我想要像myVar.modifyOnChange之类的东西?     });     }     this.modifyOnChange = function()      {          警报(\“修改\”);      } }     

解决方法

如果您使用的框架为功能实现EcmaScript 5绑定方法,请使用:
onChange: modifyOnChange.bind(this),
否则自己实现:
onChange: (function(self) {
    return function() {
        return modifyOnChange.apply(self,arguments);
    }
})(this),
myVar.modifyOnChange
可能有用,但是如果将代码绑定到希望持有该对象的全局对象,那么将东西抽象到类中的意义何在?如果有人要添加另一个MyNewPopupStuff对象,该怎么办?