从HTML初始化coffeescript(骨干)类

时间:2012-04-01 02:50:08

标签: ruby-on-rails backbone.js coffeescript

这可能会成为一个愚蠢的错字,但只是因为有一个关于这个的问题。我刚开始使用CoffeeScript里面的rails应用程序。

我在people.js.coffee中创建了一个类PeopleView:

class PeopleView extends Backbone.View
....

我正在尝试从HTML文件初始化它:

<script language="text/javascript">
   $(document).ready(function() {
        var view = new PeopleView();
   });
</script>

我收到一条未定义PeopleView的错误。我可以在编译的application.js中看到PeopleView已定义。是否需要在coffeescript文件之外初始化类?

- 编辑

我刚注意到输入

window.PeopleView = PeopleView 
people.js.coffee文件底部的

将使其正常工作。这是一个好方法吗?

1 个答案:

答案 0 :(得分:1)

window.PeopleView = PeopleView 

是的,这是正确的方法。 CoffeeScript代码将被编译为匿名函数调用,因此所有声明都将被约束到该函数的作用域,除非您通过赋予窗口属性使它们在外部作用域中可见。

这有助于防止意外覆盖全局变量。