2016-01-06 84 views
1

我試圖得到一個功能到CoffeeScript的的CoffeeScript不是在資產管道的工作

如果我用純JavaScript資產管道,

mymodel.js

function restrictPlayback(event) { 
    // Trying to stop the player if it goes above 1 second 
    if (event.currentTime > 10) { 
    event.pause(); 
    event.currentTime = 0 
    } 
} 

編譯沒有問題並且該功能起作用。

如果我把以下內容:

mymodel.js.coffee

restrictPlayback = (event) -> 

    # Trying to stop the player if it goes above 10 seconds 
    if event.currentTime > 10 
    event.pause() 
    event.currentTime = 0 

我收到以下錯誤

Uncaught ReferenceError: restrictPlayback is not defined 

我在做什麼錯?

+0

我不寫Coffeescript,但我把你的JS放入[js2coffee](http://js2.coffee/),它在函數結尾處有一個return語句。它也取決於你想要訪問'restrictPlayback'的地方。 –

+1

該問題與您給我們的代碼無關。你的CoffeeScript編譯得很好。 – 2016-01-06 16:25:11

+0

你在哪裏調用'restrictPlayback'?如果在宣佈之前,這可能是問題的原因 –

回答

1

我懷疑你正在定義函數,然後期望它具有全局範圍(即可以從任何地方使用)。

默認情況下,Coffeescript將編譯代碼包裝到Immediately Invoked Function Expressions (IIFEs)中,所以您聲明的函數只在Coffeescript文件的範圍內有效。

您可以通過在編譯時使用-b標誌來讓Coffeescript停止在IIFE中進行包裝,儘管學習使用Coffeescript的方式是更好的做法。