2012-12-11 52 views
0

函數引用回調我想修改我的代碼,以避免乾燥,發現我做的兩個回調函數一樣的東西從我的$資源。但我沒有設法傳入一個函數的引用,而不是函數聲明本身。傳遞給我的服務

我想這樣的:

emailService.getEmails(people, function(data) { 
    data.foo(); 
}); 

但我想是這樣的:

emailService.getEmails(people, $scope.callback); 

$scope.callback = function(data) { 
    data.foo(); 
}; 

我似乎並沒有得到它的工作。我可以這樣做嗎?

+2

您需要在'emailService.getEmails'行之前聲明'$ scope.callback'。 '$ scope'在任何地方聲明? –

+2

作爲旁註,你不應該避免幹 - 事實上,你應該儘可能幹;這是危險的。 ) – raina77ow

+0

是的!謝謝! – Tryggve

回答

0

這是因爲$scope.callback沒有定義(但)當您運行emailService.getEmails功能。您可以將其更改爲:

emailService.getEmails(people, callback); 

function callback(data) { 
    data.foo(); 
}; 
+0

像這樣聲明的函數將被「懸掛」到其範圍的頂部。 –

+0

謝謝,我不知道「吊裝」=) – Tryggve