在流星0.6.4.1/coffeescript中,变量可见性如何工作?

时间:2013-08-09 15:39:48

标签: coffeescript meteor

我是meteor和coffeescript的新手。我正在使用非官方流星常见问题解答中建议的文件布局。在文件集/ C.coffee中,我有

C = new Meteor.Collection 'C'
console.log "C: #{C}"

在文件服务器/ main.coffee中,我有

C.insert {test: 'test'}

当我开始流星时,我在控制台上看到:

C: [object Object]
ReferenceError: C is not defined
    at app/server/main.coffee.js:5:1
    at /home/xxx/yyy/.meteor/local/build/server/server.js:298:12

如何在馆藏/ C.coffee之外的文件中提供C?

更新:将@添加到C修复了顶层的问题。但它仍然失败:

   Meteor.methods
        test: (statement) ->
             @C.insert {test: 'test'}

失败并显示错误TypeError: Cannot call method 'insert' of undefined

1 个答案:

答案 0 :(得分:13)

要使C在文件外可见,它是在使用@中定义的,它在js中编译为this.window.,这使其具有与全局范围相同的效果: / p>

@C = new Meteor.Collection 'C'