2012-12-24 147 views
0

我有一些javascript代码在将对象传递给方法时正常工作。在the API documentation,它说,我也可以传递一个函数的方法。当我尝试这个时,我可以传递参数并做一个警报来验证参数是否被传递。但是,我无法返回该值。将函数作为参数传递给Javascript时的返回值

我错过了正确返回值的JavaScript行是什么?

var result = {model: "todo"}; 

//$httpBackend.whenGET(/^\/api\//).respond(result); 
$httpBackend.whenGET(/^\/api\//).respond(do_something); 

function do_something(method, url, data) { 
    alert("url "+url); // or whatever 
    var result = {model: "todo"}; 
    return result; 
} 

//From the API documentation 
// $httpBackend.whenGET('/.*/').respond(function(method, url, data) { 
//  do something 
//}); 
+0

哪些API您使用的? – Flimzy

+0

该值返回给函数do_something的任何调用。这不是你的代码,它是'.respond'里面的东西。如果该函数没有返回回调的值(这很可能是因为它看起来是一个异步调用),那么你不能得到返回值。 –

+0

调用$ httpBackend.whenGET(/^\/api \ //)。respond(result);正常工作。 – Chris

回答

0

推测该函数的返回值被忽略。当然,它没有被用在你当前的代码中。

你需要有功能的影响外范围的功能本身的变量:

var result; 
$httpBackend.whenGET(/^\/api\//).respond(do_something); 
// Do something with `result`... 
alert(result.model); // or whatever 

function do_something(method, url, data) { 
    alert("url "+url); // or whatever 
    result = {model: "todo"}; 
} 
+0

这只适用于$ httpBackend.whenGET(/^\/api \ //).response(do_something);'是同步的(它看起来不是这种情况,但我不知道该API)。 –

+0

@FelixKling:一个公正的观察。我希望OP能填补我们缺失的细节。 – Flimzy

+0

这是我正在使用的API。 http://docs.angularjs.org/#dsq-login-google – Chris

相关问题