2011-04-19 59 views
1
調用方法

所以我有救我的形式,它具有去嘗試保存表單之前關閉,檢查用戶通過身份認證的回調函數,這個回調按鈕然後調用驗證表單的實際保存方法,如果我們進行了身份驗證,則保存它,否則會彈出登錄框。我的問題是這種保存方法需要採取回調的結果(這是真或假)和一些額外的參數進行驗證。的Javascript:將參數傳遞給由回調

function saveButton_Click(sender, eventArgs, var1, var2, var3) 
{ 
    var authenticated = myCallbackFunction(performSave); 
} 

function performSave(authenticated, var1, var2, var3) 
{ 
    if (authenticated) 
    { 
     //do some validation and save 
    } 
    else 
    { 
     showLoginWindow(); 
    } 
} 

這是迄今爲止我已經得到了代碼,它成功地熄滅,不會回調,並將結果傳遞到performSave,但顯然它不是通過我的額外的變數,因此所有我的驗證的東西失敗。我試過以下:

var authenticated = myCallbackFunction(performSave(authenticated, var1, var2, var3)); 

但這似乎導致回調被跳過和驗證,var1,var2等總是通過未定義。那麼,我怎樣才能成功地將我的變量和我的回調結果一起傳遞給performSave方法?

+0

爲什麼不調用'myCallbackFunction'然後調用'saveButton_Click'函數執行'performSave'? – n0rd 2011-04-19 10:00:21

+0

@ n0rd認證只是不斷回來爲未定義這樣做 – dkwarr87 2011-04-19 10:37:53

+0

修復你的'myCallbackFunction'然後,因此它不會返回undefined。無論如何,無論你做什麼,你都無法將函數返回值傳遞給該函數。或者詳細描述什麼是什麼以及你想要達到什麼。 – n0rd 2011-04-19 10:46:53

回答

1

您可以用局部函數範圍將實現這一目標。

function saveButton_Click(sender, eventArgs, var1, var2, var3) 
{ 
    myCallbackFunction(function(authenticated){ 
     performSave(authenticated, var1, var2, var3); 
    }); 
} 
+0

優秀,這似乎正是我需要的,非常感謝 – dkwarr87 2011-04-19 11:18:04

-1

嘗試單獨的聲明和賦值,就像這樣:

var authenticated = null; 
authenticated = myCallbackFunction(performSave(authenticated, var1, var2, var3)); 
+0

嗯,試過了,我把一個斷點放在authenticated = null上,然後走過去。當我試圖踏進myCallbackFunction它只是跳過直入performSave與認證= NULL – dkwarr87 2011-04-19 10:31:48