这可能会成为一个愚蠢的错字,但只是因为有一个关于这个的问题。我刚开始使用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文件底部的将使其正常工作。这是一个好方法吗?
答案 0 :(得分:1)
window.PeopleView = PeopleView
是的,这是正确的方法。 CoffeeScript代码将被编译为匿名函数调用,因此所有声明都将被约束到该函数的作用域,除非您通过赋予窗口属性使它们在外部作用域中可见。
这有助于防止意外覆盖全局变量。