2013-08-04 28 views
4

這是最奇怪的事情,出於某種原因,即使啓用了自動發佈,我也無法從瀏覽器控制檯訪問該集合。下面的代碼是一個簡單的列表程序,您可以在這些程序中輸入項目並將其顯示在屏幕上。在控制檯中,當我嘗試通過輸入People.find()或People.find()來訪問數據庫時,它會引發一個錯誤'ReferenceError:Can not find variable:People'使用Meteor時,我無法從客戶端控制檯訪問集合?

這是怎麼回事我有自動發佈,所以我想我可以從客戶端訪問集合?

代碼:

var People = new Meteor.Collection("people"); 


if (Meteor.isClient) { 


console.log(People.find()); 

Template.personList.people = function() { 
    return People.find(); 
}; 

Template.personForm.events({ 
    'click button': function(e, t) { 
     var el = t.find("#name"); 
     People.insert({ name: el.value }); 
     el.value = ""; 
    } 
}); 

Template.person.editing = function() { 
    return Session.get("edit-" + this._id); 
}; 

Template.person.rendered = function() { 
    var input = this.find("input"); 
    if(input) { 
     input.focus(); 
    } 
}; 

Template.person.events({ 
    'click .name': function (e, t) { 
     Session.set("edit-" + t.data._id, true); 
    }, 
    'keypress input': function (e, t) { 
     if (e.keyCode == 13) { 
      People.update(t.data._id, { $set: { name: e.currentTarget.value }}); 
      Session.set("edit-" + t.data._id, false); 
     } 
    }, 
    'click .del': function (e, t) { 
     People.remove(t.data._id); 
    } 
}); 

} 
+0

因此,我發現使用Meteor 0.6時,集合不是全局使用var定義的。我刪除了var,現在我可以從控制檯訪問Collection。雖然我讀到,你也可以把@符號放在集合變量的前面,像這樣:@People = new Meteor.Collection(「people」);我做了這個,但它不工作。我如何讓@符號起作用? – nearpoint

回答

13

除非您使用咖啡標記,否則不必使用@。在普通的JavaScript去除var讓你的變量可以在任何地方的文件的外部訪問(包括鉻控制檯):

var People = new Meteor.Collection("people"); 

成爲

People = new Meteor.Collection("people"); 

要使用的CoffeeScript使用.coffee擴展和運行meteor add coffeescript到允許流星將咖啡腳本文件編譯爲js文件

+1

非常感謝,它的工作! – nearpoint

+1

欲瞭解更多信息,請訪問:http://docs.meteor.com/#namespacing – mrmnmly

+0

感謝它的工作! –

2

回答你的問題@用於CoffeeScript的語言(Javascript替代),你可以爲它添加流星包,然後寫在語言您的應用程序。在此瞭解它http://coffeescript.org

相關問題