2009-08-19 60 views
0

我創建了一個按鈕,點擊後,就會激活備份功能。
我的問題,我已經點擊這個按鈕之前備份啓動。
如何解決這個問題?任何想法 ?YUI事件實用問題

這裏是我的代碼(片段):

(按鈕):

   var oSaveCuratedQuery = new YAHOO.widget.Button({ 
       type: "button", 
       label: "Save Query", 
       id: "updateCuratedQuery", 
       name: "updateCuratedQuery", 
       value: "updateCuratedQueryValue", 
       container: idReq }); 

YAHOO.util.Event.addListener("updateCuratedQuery-button", "click", saveCuratedQuery(idReq, contentCurValue)); 

(備份功能):

function saveCuratedQuery (geneId,curatedText) { 

      var handleSuccessGeneQueries = function(o){ 
       Dom.get('progress').innerHTML = "Data Saved..."; 
      } 

      var handleFailureGeneQueries = function(o){ 
       alert("Save failed...") 
      } 

      var callbackGeneQueries = 
      { 
       success:handleSuccessGeneQueries, 
       failure: handleFailureGeneQueries 
      }; 


    var sUrlUpdate = "save.html?"; 
    var postData = 'key=saveCuratedQuery&value=gene_id==' +geneId+ '--cq==' +curatedText; 

var request = YAHOO.util.Connect.asyncRequest('POST', sUrlUpdate, callbackGeneQueries, postData); 

     } 

我也嘗試: oSaveCuratedQuery.on(「點擊「,saveCuratedQuery(idReq,contentCurValue));
但同樣的問題!
之前,我點擊「保存」按鈕,備份完成。

謝謝你的幫助。

回答

1

的addListener的第三個參數應該是當事件發生時要運行的功能。

你傳遞saveCuratedQuery的返回值代替。

var callbackSaveCuratedQuery = function (idReq, contentCurValue) { 
    return function callbackSaveCuratedQuery() { 
     saveCuratedQuery(idReq, contentCurValue); 
    }; 
}(idReq, contentCurValue); // Use an anonymous closure function 
          // to ensure that these vars 
          // do not change before the click 
          // event fires. 

YAHOO.util.Event.addListener("updateCuratedQuery-button", 
          "click", 
          callbackSaveCuratedQuery 
          ); 

https://developer.mozilla.org/en/A_re-introduction_to_JavaScript#Closures如果您需要了解封。

+0

大衛的錢在這裏。你正在調用不指向它的功能... – BigBlondeViking 2009-08-19 15:07:06

+0

非常感謝,我有一個現在可用的備份按鈕! 另外,感謝您的鏈接(本頁面上的許多有趣的事情)。 – 2009-08-19 15:27:54