我不知道所有coffeescript编译器是否将其脚本包装在匿名函数中,但这就是我看到Rails所做的。如何禁用此封装?
我想在一个coffeescript文件中放入几个初始化函数,然后从页面上的<script>
标记中调用其中一个(这样每个页面调用一个不同的初始化程序)。如果封装了初始化函数,则不能这样做。
Coffeescript初始化函数:
initializerA = -> console.log 'foo'
initializerB = -> console.log 'bar'
页面代码:
<script>$(document).ready(initializerA)</script>
系统:coffee-rails 3.2.1,Rails 3.2.3,Ruby 1.9.3
答案 0 :(得分:7)
Coffeescript文档说,为了封装/安全,所有脚本都将包装在匿名函数中。要在全局范围内访问某些内容,请执行以下操作:
window.myvar = myvar
答案 1 :(得分:2)
您可以通过执行以下操作将多个文件放入单个文件中:
((Demo, $, undefined_) ->
Demo.utils = Demo.utils or {}
Demo.utils.bacon = (->
alert("bacon called")
)()
Demo.utils.eggs = (->
alert("eggs called")
)()
) window.Demo = window.Demo or {}, jQuery
然后在你的页面中调用适当的方法:
Demo.utils.bacon();
对此模式的一个很好的解释可以是found here.