2013-07-28 54 views
1

在CoffeeScript的功能我在CoffeeScript的文件中定義的函數:調用從嵌入式腳本

showAlert =() -> 
    alert("asdfsd") 

並從該視圖我調用這個函數爲:

:javascript 
    jQuery(function(){ 
    showAlert(); 
    }); 

但功能不觸發。這裏有什麼問題?

+0

簡單'showAlert()'工作嗎? – alex

+0

@alex是的!當我刪除函數並將代碼放入jQuery函數中時。 –

回答

1

這是因爲自動的CoffeeScript包裝在一個Immediately-Invoked Function Expression(IIFE)其transpiled的Javascript輸出,這意味着你聲明的CoffeeScript塊內的任何功能都在全球範圍內不。因此,您的jQuery塊無法找到showAlert函數,因爲它不存在於您的jQuery塊可以訪問的作用域/閉包中。

你能做什麼(雖然我不知道這是一個好主意)是宣佈你的「全球性」功能的window命名空間:

window.showAlert = -> alert('asdfasdf') 

從你的jQuery塊調用它:

javascript: 
    jQuery(function($){ 
    window.showAlert(); 
    }); 

這將起作用,因爲window名稱空間在所有(瀏覽器)作用域中都可用。