2011-04-19 46 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