2011-01-31 9 views
23

Come si esegue la procedura seguente in 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"); 
    }); 
    }) 

risposta

31

Ecco un altro modo leggermente condensato di scriverlo:

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

nota la mancanza di parentesi, e la stenografia "{nome utente}" oggetto letterale.

+2

Questo è il modo carino di scriverlo in CoffeeScript - dalla persona che ti ha portato CoffeeScript! Questo esempio illustra un numero di funzionalità di CoffeeScript che penso rendano CoffeeScript un linguaggio così carino con cui lavorare. – yfeldblum

+0

Grazie per la risposta e grazie per coffeescript. Penso che la mia difficoltà nell'afferrare il coffeescript dipenda più dalla mia mancanza di conoscenza di javascript. Ma se potessi dare un suggerimento, che ne dici di spiegare sulla tua pagina coffeescript le strane definizioni di funzioni che iniziano con 'func_name = function (x)'. Sapere che presto mi avrebbero salvato qualche problema. – Tum

2

Questo è un modo:

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

Alcune di queste parentesi possono essere omessi, ma a mio parere, si aiutano con la comprensione del flusso di codice (almeno in questa situazione).

Mi raccomando di giocherellare con il coffeescript qui http://jashkenas.github.com/coffee-script/ (utilizzare il pulsante "prova coffeescript"). La lingua è molto facile da imparare.

+0

grazie tanto. forse sono solo denso o qualcosa del genere ma per la vita di me non riuscivo a capirlo anche dopo aver guardato tutti gli esempi che ho trovato online. – Tum

+0

Penso che questo sia migliore di quello accettato, mentre so che è solo una preferenza e che ha postato la risposta ... – Quv

14

questo è il miglior modello generico mi è venuta in mente finora:

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

Compila fino a:

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