2012-12-24 146 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

相關問題