YUI Event Utility проблема - PullRequest
       11

YUI Event Utility проблема

0 голосов
/ 19 августа 2009

Я создаю кнопку, при нажатии на которую активируется функция резервного копирования.
Моя проблема, резервное копирование запускается до того, как я нажму на эту кнопку.
Как мне решить эту проблему? Любая идея?

Вот мой код (фрагмент):

(кнопка):

                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);

        }

Я также пытаюсь: oSaveCurationQuery.on («клик», saveCurationQuery (idReq, contentCurValue));
Но та же проблема!
Резервное копирование выполняется до того, как я нажму кнопку «Сохранить».

Спасибо за помощь.

1 Ответ

1 голос
/ 19 августа 2009

Третий аргумент addListener должен быть функцией, запускаемой при возникновении события.

Вы передаете ему возвращаемое значение вместо saveCurationQuery.

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, если вам нужно узнать о замыканиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...