2013-02-23 130 views
0

我是Meteor的新手,對新手問題表示歉意。注意我正在使用CoffeeScript。模板不顯示對象

我創建上面如下服務器和客戶端的「如果」一個新的集合:

Trivia = new Meteor.Collection("trivia") 

在啓動時,我插入一些文檔到集合下,如果Meteor.isServer。這裏的一個例子:

Meteor.startup() -> 
     Trivia.remove({}) 
     Trivia.insert({question: "Who Played Ethan Hunt in Mission Impossible?", choices: ["Tom Cruise", "Matt Damon", "Liam Neeson", "Edward Norton"], answer: "Tom Cruise", used: false}) 

在HTML頁面上,我有一個帶{{ask}}的「trivia」模板。

<body> 
    {{> trivia}} 
</body> 

<template name="trivia"> 
    <p class="label label-info">Movie Trivia:</p> 
    <h3>{{ask}}</h3> 
</template> 

這裏距離.isClient

if Meteor.isClient 
    Template.trivia.ask =() -> 
     Trivia.findOne({used: false}) 

我的代碼,因爲它是,我回來的翻譯:在我的HTML標記H3內。

我想剛剛回來的問題文本,但我得到了一個空白頁面,如果我使用下面的代碼:

Template.trivia.ask =() -> 
    Trivia.findOne({used: false}).question 

如果我運行Trivia.findOne({使用:假})。問題在控制檯內部,我得到了我正在尋找的東西,即:「誰在不可能完成的任務中扮演Ethan Hunt?」

回答

0

答案是湯姆克魯斯!開玩笑

該查詢返回的對象包含您的文檔:

{ 
    question: "Who Played Ethan Hunt in Mission Impossible?", 
    choices: ["Tom Cruise", "Matt Damon", "Liam Neeson", "Edward Norton"], 
    answer: "Tom Cruise", 
    used: false 
} 

所以上面的是什麼,是給車把,但你想要的問題,所以你應該使用:

<h3>{{ask.question}}</h3> 

關於當您使用Trivia.findOne({used: false}).question的空白頁面。這是因爲當流星最初在瀏覽器上加載時,本地集合是空的,直到它從服務器獲取它們。因此,在某個時刻,在很短的時間內,查詢將不會返回任何內容,因此您只需要處理findOne({used:false})沒有結果的情況。運行到異常時頁面變空白。

+0

超級有用的迴應Akshat。謝謝。精彩的工作! – ppedrazzi 2013-02-24 02:40:57