Coffeescript不在资产管道中工作

时间:2016-01-06 16:20:19

标签: javascript ruby-on-rails coffeescript asset-pipeline

我试图在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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我怀疑您正在定义该功能,然后期望它具有全局范围(即可从任何地方使用)。

默认情况下,Coffeescript将已编译的代码包装到Immediately Invoked Function Expressions (IIFEs)中,因此您声明的函数仅在Coffeescript文件的范围内有效。

你可以通过在编译时使用-b标志来让Coffeescript停止在IIFE中包装,尽管学习Coffeescript方式的做法要好得多。