javascript,dojo,在jsp's带有外壳

javascript, dojo, building dialogs in jsp's with enclosures

本文关键字:外壳 dojo jsp javascript      更新时间:2023-09-26

我在dojo对话框中使用闭包来防止函数和变量发生冲突。

我有一个jsp页面,其中包含一个复杂的对话框。它大部分都在工作。只是一个非常烦人的细节。如果小部件发生更改,我如何通知处理程序方法?我们希望对话框的java脚本尽可能多地保留在闭包中。

由于弹出窗口出现在多个位置,我希望未来的程序员能够用任何东西替换myVar。有没有一种方法可以确定在onChange 中正确放置什么

------jsp页面-----
var myVar=新的MyNewPopupStuff(42)
myVar.contrstrucDialog()
……
includeTemplate template="myDialog.jsp"
…..

--------myDialog.jsp----
<script type="text/javascript"src="my.js"/>


<div id="myDialogData"dojotype="dijit.layout.ContentPane"region="right"splitter="true"class="data"style="width:50%;"><'/div>
….

--------my.js文件----

函数MyNewPopupStuff(param){this.construcDialog=函数()。。。。。。。while(需要添加更多小部件){fieldHolder=dojo.byId("myDialogData"addWidget(widgetName,myDialogData);}addWidget=函数(fieldHolder,widgetName){//需要在"myVar.bar()"中打印变量的名称(myVar或它可能是什么)dojo.place(newLabel,fieldHolder);var newField=新dijit.form.ValidationTextBox({id:"i"+联系人类型id,name:widgetName,value:值,trim:true,**on更改:**??????当小部件被修改时,我想调用下面的modifyOnChange,而不是其他的modify-on-change。我想我想要像myVar.modifyOnChange????});}this.modifyOnChange=函数(){警报("已修改");}}

如果您使用的框架实现了函数的EcmaScript 5绑定方法,请使用:

onChange: modifyOnChange.bind(this),

其他人自己实现:

onChange: (function(self) {
    return function() {
        return modifyOnChange.apply(self, arguments);
    }
})(this),

myVar.modifyOnChange可能会起作用,但如果您将代码与您期望持有对象的全局绑定,那么将内容抽象到类中有什么意义呢?如果有人想添加另一个MyNewPopupStuff对象,会发生什么?