2015-05-30 60 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