我创建了一个按钮,当单击它时,它会激活备份功能
我的问题,备份是在我点击这个按钮之前启动的。
怎么解决这个问题呢?有什么想法吗?
这是我的代码(片段):
(按钮):
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));
但同样的问题!
在单击“保存”按钮之前完成备份。
感谢您的帮助。
答案 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。