[英]struts2 dojo button handler moving into a closure
使用 Struts2 與瓷磚和 dojo 一些在過去 2 年發布的東西。 試圖將按鈕 onclick 的 gobal 代碼和表單驗證移動到閉包中。
------myjsp.jsp頁面-----
function doDialog(){
var myVar = new MyNewDialog(42);
myVar.showDialog();
}
......
< button... to show dialog.. onclick="doDialog()"..../>
< tiles:insertTemplate template="myDialog.jsp"
.....
--------myDialog.jsp----
< script type="text/javascript" src="my.js"/>
……
<div dojoType="dijit.form.Button" iconClass="toolbarIcon toolbarIconSave" id="mySaveButtonId" showLabel="true" onclick="mySaveButtonPressed();">
</div>
--------my.js 文件----
// This function works because it is global, I want to move it into the closure.
function mySaveButtonPressed(){
.....
validateDialog();
...
}
function validateDialog(){
.. yes it calls the the struts2 validators... but also does some other things.
}
function MyNewDialog(param){ this.contstrucDialog = function(){... } //desired location saving code //this.mySaveButtonPressed = function(){ //.....< //validateDialog(); //... //} //function validateDialog(){ //..... // }..... everything but the method for validating and saving the dialog data.... }
我將 save 和 validate 方法移到了閉包中,並嘗試添加到我的目標方法的連接。 mySaveButtonPressed 永遠不會執行。 我認為連接的全部意義在於將小部件事件連接到某個方法調用。
myjsp.jsp
var myVar = new MyNewPopupStuff(42); var mySaveButton = dojo.byId("mySaveBut \tonId");
dojo.connect(mySaveButton,"onclick", myVar.mySaveButtonPressed());
myVar.contstrucDialog();
因為我真的不想在任何地方放很多“myVar”的東西,所以我嘗試了“this”而不是 myVar。 沒運氣。
問題:我應該如何將此代碼移動到閉包中????
--------------------------有一個想法,但暫時無法測試--------
也許 dojo.connect 應該 go 進入我構造對話框內容的閉包中。
問題:處理這種常見問題的行業最佳實踐是什么?
在構建對話框的 java 腳本中,我放置了構建對話框的 javascript。
作品
function MyNewDialog(參數){
this.contstrucDialog = function(){
...
dojo.connect(saveButton,"onclick",this,mySaveButtonPressed,true );
......
}
但不喜歡
dojo.connect(saveButton,"onclick",this,mySaveButtonPressed(),true)
這么小的問題,有人可以為我回答。 我什么時候放括號什么時候不放? 我正在調用 function mySaveButtonPressed(),為什么我不使用“mySaveButtonPressed()”?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.