2015-05-30 27 views
1

我试图在Cloud9上创建排行榜。但是我得到错误:PlayersList未定义...在编辑器中。该应用程序工作,但后来它的代码编辑器中强调所有“不defind PlayersList”Cloud9&Meteor.js undefined global var

代码:

PlayersList = new Mongo.Collection('players'); 

if(Meteor.isClient){ 

    Template.leaderboard.helpers({ 

     'player': function(){ 
     return PlayersList.find({}, {sort: {score: -1, name: 1}}); 
    }, 

    'selectedClass': function(){ 
     var playerId = this._id; 
     var selectedPlayer = Session.get('selectedPlayer'); 
     if(selectedPlayer === playerId){ 
     return 'selected'; 
     } 
    }, 

    'showSelectedPlayer': function(){ 
     var selectedPlayer = Session.get('selectedPlayer'); 
     return PlayersList.findOne(selectedPlayer); 
    } 

    }); 
+0

当把它像这样:var PlayersList =新Mongo.Collection( '玩家'); ....一切正常... – user2215585

+0

只是编辑器的问题,还是流星抱怨呢? – Mutahhir

+0

当我使用:var PlayersList = new Mongo.Collection('players');该应用程序将无法正常工作......但编辑器中的错误消失了......使用时:PlayersList = new Mongo.Collection('players');应用程序工作正常,但编辑器错误 - 强调var(PlayersList) – user2215585

回答

1

CLOUD9的编辑器使用ESLint,并且使用foo = 22使得它认为有像var foo;缺少声明某处。您可以选择忽略这一点,或者如下修正:

添加/*eslint-env meteor */顶端所以它没有给出任何关于流星全局警告,也许你还需要添加/* globals Player */的情况下,错误加得仍然留下。 (我还没有测试过,请让我知道它是怎么回事,所以我可以改进答案)

0

我解决了一个小的解决方法的问题。我添加了coffeescript,然后在全局上使用了@这个符号,就像你应该使用coffeescript定义一个集合。那就是为我解决它。它工作正常。当我在新的浏览器窗口中打开应用程序时,控制台中提供了帖子。

实施例:

@Posts = new Mongo.Collection('posts') 
+0

是的,这是一个有点肮脏的伎俩。你看,Meteor会自己做命名空间(文件和包的范围;参见:http://docs.meteor.com/#/full/namespacing);但是这对CoffeeScript不起作用,因为它没有用'var'声明变量。 – nalply