我的应用程序中有引用我的application.js文件的视图,它包含我在整个应用程序中使用的函数。
在使用了Rails 3.1的边缘版本之后,我刚刚安装了Rails 3.1发布候选版本。在安装RC之前,我没有遇到任何问题,但是现在我得到了这个错误:
ReferenceError:找不到变量: indicator_tag
indicator_tag是我在application.js中定义的函数。我在javascript文件中注意到的唯一不同是,现在我的所有函数都封装在:
(function() { ... }).call(this);我知道这是为了变范围吗?但这能阻止我的页面使用这些变量吗?在有人问之前,我已经确定了包含标记中的javascript路径是正确的。
发布于 2011-05-22 19:34:40
默认情况下,每个CoffeeScript文件都被编译成一个闭包。除非将函数导出到全局变量,否则无法与来自其他文件的函数交互。我建议你这样做:
在每个coffeescript文件的顶部,添加一行如下
window.Application ||= {}这将确保在任何时候都有一个名为Application的全局应用程序。
现在,对于需要从另一个文件调用的每个函数,将它们定义为
Application.indicator_tag = (el) ->
...然后用
Application.indicator_tag(params)发布于 2011-09-06 06:39:41
如果您有一个非常复杂的JS后端,Dogbert的解决方案是一个很好的方法。但是,如果您只使用了少数几个函数,那么有一个简单得多的解决方案。只需将它们直接添加到窗口对象中,如下所示:
window.indicator_tag = (el) ->
...然后,您可以在任何地方使用您的函数,而不必将它们封装在另一个对象中。
https://stackoverflow.com/questions/6089992
复制相似问题