2012-12-05 93 views
2

當我做一些簡單的像這樣:範圍中的CoffeeScript/Rails的

$ -> 
    $('#target').html('blabla') 

它的工作原理。

當我嘗試:

$ -> 
    $('#target').html('blabla').myFunction() 

    myFunction = -> 
    // a certain action 

我總是得到一個錯誤:TypeError: $(...).html(...).myFunction is not a function

這是爲什麼?

正如你可能猜到的,我很遠離親!

回答

4

如果你做這樣的事情:

$ -> 
    $('#target').html('blabla').myFunction() 

    myFunction = -> 
    alert("OK") 

轉換爲這樣的:

$(function() { 
    var myFunction; 
    $('#target').html('blabla').myFunction(); 
    return myFunction = function() { 
    return alert("OK"); 
    }; 
}); 

正如你所看到的,myFunction是包含一些結構的變化,但作爲對象當您執行$('#target'#).html('blablabla')時沒有名爲myFunction的方法,這就是您得到該錯誤的原因。

我不知道你正在嘗試做的,但你可以做這樣的事情

$ -> 
    myFunction = (data) -> 
    alert(data) 

    myFunction $('#target').html('blablabla') 

其轉化爲:

$(function() { 
    var myFunction; 
    myFunction = function(data) { 
    return alert(data); 
    }; 
    return myFunction($('#target').html('blablabla')); 
}); 

如果你正在學習的CoffeeScript,一個好的網站想要轉換是http://js2coffee.org/

+0

謝謝你那麼長的答案! – Rockbot