2011-01-31 18 views
23

如何在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"); 
    }); 
    }) 

回答

31

下面是另一個把它寫稍微濃縮的方式:

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

注意缺少括號,並速記「{用戶名}」對象字面值。

2

這是一個辦法:

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

一些括號可以省略,但在我看來,他們與理解(至少在這種情況下)的代碼流幫助。

我推薦在這裏擺弄咖啡腳本http://jashkenas.github.com/coffee-script/(使用「try coffeescript」)按鈕。這門語言很容易學習。

+0

感謝這麼多。也許我只是密集或什麼,但對於我的生活,我甚至在查看所有可以在網上找到的例子後都無法弄清楚。 – Tum 2011-01-31 11:15:34

+0

我認爲這看起來比接受的更好,而我知道這只是一個偏好,誰發佈了答案... – Quv 2014-04-26 19:30:31

14

這是最好的通用模式,我拿出這麼遠:

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

它編譯成:

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