2011-01-31 17 views
23

Jak wykonać następujące czynności w CoffeeScript?

$(function() { 
    $('input#username').keyup(function() { 
     var username = $('input#username').val(); 
     url = '/users/check_username/'; 
     params = { username : username }; 
     $.get(url, params, function(response){ markUsername(response); }, "json"); 
    }); 
    }) 

Odpowiedz

31

Oto kolejny nieznacznie skondensowany sposób, żeby to napisać:

$ -> 
    $('input#username').keyup -> 
    username = $(this).val() 
    callback = (response) -> markerUsername response 
    $.get '/users/check_username/', {username}, callback, 'json' 

Uwaga brak parens, a skrótem "{nazwa}" object dosłowne.

+2

To jest ładny kanoniczny sposób na napisanie go w CoffeeScript - od osoby, która przyniosła ci CoffeeScript! Ten przykład ilustruje szereg funkcji CoffeeScript, które moim zdaniem sprawiają, że CoffeeScript jest tak miłym, małym językiem do pracy. – yfeldblum

+0

Dzięki za odpowiedź i podziękowania za coffeescript. Myślę, że moja trudność w chwytaniu coffeescriptu dotyczy raczej mojego braku wiedzy na temat javascript. Ale jeśli mógłbym coś zasugerować, to może wyjaśnić na twojej stronie coffeescript dziwnie wyglądające definicje funkcji zaczynające się od 'func_name = function (x)'. Wiedząc, że wcześnie, zaoszczędziliby mi kłopotów. – Tum

2

Jest to sposób:

$(-> 
    $('input#username').keyup(-> 
     username = $('input#username').val() 
     url = '/users/check_username/' 
     params = {username: username} 
     $.get(url, params, (response)-> 
      markerUsername(response) 
     , "json") 
    ) 
) 

Niektóre z tych nawiasach mogą zostać pominięte, ale moim zdaniem, one pomóc w zrozumieniu przepływ kodu (przynajmniej w tej sytuacji).

Polecam bawić się z coffeescript tutaj http://jashkenas.github.com/coffee-script/ (użyj przycisku "spróbuj coffeescript"). Język jest bardzo łatwy do nauczenia.

+0

Dzięki tak dużo. może jestem po prostu gęsta, czy coś w tym stylu, ale nie mogłem tego zrozumieć nawet po obejrzeniu wszystkich przykładów, które mogłem znaleźć w Internecie. – Tum

+0

Myślę, że wygląda to lepiej niż zaakceptowany, a ja wiem, że to tylko preferencja i kto opublikował odpowiedź ... – Quv

14

To najlepszy wzór rodzajowy Mam wymyślić do tej pory:

$.ajax '/yourUrlHere', 
    data : 
    key : 'value' 
    success : (res, status, xhr) -> 
    error : (xhr, status, err) -> 
    complete : (xhr, status) -> 

To kompiluje się do:

$.ajax('/yourUrlHere', { 
    data: { 
    key: 'value' 
    }, 
    success: function(res, status, xhr) {}, 
    error: function(xhr, status, err) {}, 
    complete: function(xhr, status) {} 
}); 
Powiązane problemy