javascript - Coffeescript 无法在 Assets 管道中工作

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

我正在尝试将函数放入 CoffeeScript 中的 Assets 管道中

如果我使用纯 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

我做错了什么?

最佳答案

我怀疑您正在定义该函数,然后期望它具有全局作用域(即可以从任何地方使用)。

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

您可以在编译时使用 -b 标志让 Coffeescript 停止在 IIFE 中进行包装,尽管学习以 Coffeescript 的方式做事是更好的做法。

关于javascript - Coffeescript 无法在 Assets 管道中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637775/

相关文章:

javascript - 动画 JSON 网格上的 Three.js SpotLight 类

javascript - 突变观察者产生无限循环

javascript - 复杂的 Div/Canvas 放置

ruby-on-rails - 如何获取 RSpec 响应中包含的参数来检查它?

coffeescript - 如何将 jest 与 CoffeeScript 和 ES6/ES2015 一起使用(例如通过 Babel)?

coffeescript - 如何使用 Coffeescript 和 Rails 3.1 定义回调函数?

javascript - 错误 - 在主页上添加文本计数器后(使用 Jquery 计算剩余字符) - 需要刷新页面

javascript - import * vs import { specificName } 在 Typescript/ES6 中?

ruby-on-rails - 升级到 ActionText - 编辑器无法正常工作/显示

ruby-on-rails - 如何在 Rails 中使用 Bootstrap 使表单居中