2012-07-28 50 views
0

好了,所以我有這樣的一個形式CoffeeScript的變量,以形成價值

<INPUT type="text" name="inputbox" value=""> 
<INPUT TYPE="button" NAME="button2" Value="Write" onClick="writeText(this.form)"> 

內,我從CoffeeScript的

(function() { 
    var writeText; 

    writeText = function(form) { 
    return form.inputbox.value = "ping"; 
    }; 

}).call(this); 

我需要知道我怎麼叫WRITETEXT下生成的JavaScript?

因爲它是當我單擊按鈕沒有反應....如果我刪除函數(){}。調用(這)包裝它的作品。

我無法刪除包裝。我需要知道如何使用.call(this)調用writeText。

回答

1

這是一個範圍問題,Coffeescript將所有內容封裝在自己的閉包中,以避免污染全局名稱空間。有兩種解決方案;

  1. 使用coffeescript的「--bare」選項編譯(避免將包裝放在首位)。

  2. 將您的coffeescript函數綁定到瀏覽器在運行時看到的某個對象。就像這樣:

window.writeText = (form) -> form.inputbox.value = "ping"

在第二個選項,您WRITETEXT功能勢必會在瀏覽器窗口對象,它是隱式this對象時,你的腳本在瀏覽器中運行。

+0

這就是它「window.writeText」非常感謝! – thefonso 2012-07-28 19:32:56