2012-07-13 24 views
23

在我的CoffeeScript文件,clients.js.coffeeCoffeeScript的功能/資產/ JavaScript的沒有發現

myFunction = (variable) -> 

我的CoffeeScript在app/assets/javascript創建的函數。但是當我嘗試調用該函數時,控制檯向我顯示一個錯誤,指出找不到函數。

我檢查網頁的源和它表明加載腳本:

<script src="/assets/clients.js?body=1" type="text/javascript"></script> 

這是發現腳本源裏面:

(function() { 
    var myFunction; 

    myFunction = function(variable) {} 
}).call(this); 

任何想法,我缺少什麼?我應該怎麼做才能調用這個函數?

+0

您已經在匿名函數作用域中創建了一個函數。所以它不可見外 – zerkms 2012-07-13 04:21:04

+0

可能重複[爲什麼發生在我的CoffeeScript?](http://stackoverflow.com/questions/6481986/why-is-this-happening-to-my-coffeescript) – 2012-07-13 04:24:17

+0

我如何解決它在軌道?謝謝 – revolver 2012-07-13 04:31:19

回答

53

爲了使從外部訪問,所有你需要做的是在前面加一個「@」。 這會將函數附加到窗口對象。

@myFunction = (variable) -> 
+1

節省了我的時間。謝謝 – Uzair 2015-10-09 17:50:25

5

將其綁定到窗口

myFunction = (variable) -> 
    alert('zzzzzzzz') 

window.myFunction = myFunction 
+0

另外這裏是一個截屏視頻,可能會有幫助 - http://house9.blogspot.com/2011/05/rails-31-javascript-execution.html – house9 2012-07-13 04:35:59