Coffeescript如何从其他资产访问功能?

时间:2011-05-28 16:53:40

标签: coffeescript

所以我有两个控制器,hotelsvideos。我希望hotels.js.coffee能够访问videos.js.coffee中创建的函数,但我收到“未定义”错误。

我是CoffeeScript的新手,所以任何线索都会受到赞赏。

4 个答案:

答案 0 :(得分:13)

CoffeeScript会将你的咖啡编译成包含在自动执行函数中的JS,其中包含窗口范围(function {})。call(this);

所以在videos.js.coffee中,您可以编写如下内容:

    @getVideo: (id) ->

并且getVideo函数将绑定到窗口对象。

答案 1 :(得分:7)

CoffeeScript在匿名函数内运行,在同一文件中声明函数,不会导出为全局函数。

尝试这样的方法来声明全局函数:

window.myFunction = ->
    //some code

答案 2 :(得分:3)

在编译期间,CoffeeScript将您的代码包装在匿名函数中并应用它。您必须以适合您环境的预期方式导出公共接口。

(exports || window).publicMethod = (foo, bar) -> foo + bar

然后,您需要在node.js中使用require()并在浏览器中引用window对象。

在浏览器中还有其他方法可以执行此操作。查看RequireJS

答案 3 :(得分:0)

实际上,您可以使用顶级窗口变量,也可以使用通过CommonJS提供的exports对象。请注意,您还可以访问完整的控制器,而不仅仅是函数。

请参阅http://jashkenas.github.com/coffee-script/上的“Lexical Scoping and Variable Safety”和“text / coffeescript”脚本标签部分。