YUI事件实用程序问题

时间:2009-08-19 15:00:16

标签: javascript events 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(“click”,saveCuratedQuery(idReq,contentCurValue));

但同样的问题!
在单击“保存”按钮之前完成备份。

感谢您的帮助。

1 个答案:

答案 0 :(得分: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