2012-04-12 10 views
5

Nie jestem pewien, jak napisać to w CS. może ktoś może pomóc:CoffeeScript, przekazywanie wielu parametrów, w tym funkcji anonimowej

FB.getLoginStatus(function (response) {} , {scope : scope}) 

dziękuję.

+0

ive próbował nic ... i wszystko im się pomysły człowieka ..: P – d4rklit3

+0

http://stackoverflow.com/questions/6720402/in-coffeescript-how-can -u-make-a-funkcja-zadzwoń-z-anonimowymi-funkcjami-as-pa –

+0

@ d4rklit3 Gdybym był tobą, wycofałbym się na chwilę z coffeescript i najpierw starałbym się dobrze zrozumieć javascript. –

Odpowiedz

9

Można by napisać coffeescript jak tak ...

FB.getLoginStatus(
    (response) -> 
    doSomething() 
    {scope: scope}) 

Które konwertować do JavaScriptu jak tak ...

FB.getLoginStatus(function(response) { 
    return doSomething(); 
}, { 
    scope: scope 
}); 
+2

To jest okropne formatowanie. –

+9

Przykro mi, że moja szybka próbka nie spełnia Twoich wymagań. – scottheckel

+1

Masz przebaczenie. 'FB.getLoginStatus receiveLogin, {scope}' –

4
FB.getLoginStatus(function(response) {}, { 
    scope: scope 
}); 

w JavaScript jest:

FB.getLoginStatus(
    (response) -> 
    { scope } 
) 

w CoffeeScript.

Aby odpowiedzieć na pytanie o wielu parametrach dodatkowo spojrzeć na tych przykładach:

$('.main li').hover(
    -> $(@).find('span').show() 
    -> $(@).find('span').hide() 
) 

W coffeescript równa do:

$('.main li').hover(function() { 
    return $(this).find('span').show(); 
}, function() { 
    return $(this).find('span').hide(); 
}); 

w JavaScript.

Jeszcze prostszy przykład dotyczące obsługi wielu parametrów (bez funkcji anonimowych) byłoby:

hello = (firstName, lastName) -> 
    console.log "Hello #{firstName} #{lastName}" 

hello "Coffee", "Script" 

w coffeescript kompiluje do:

var hello; 

hello = function(firstName, lastName) { 
    return console.log("Hello " + firstName + " " + lastName); 
}; 

hello("Coffee", "Script"); 

w JavaScript.

0

Inna opcja:

FB.getLoginStatus(((response) ->),{scope}) 
Powiązane problemy