【问题标题】:Template Does Not Display Object模板不显示对象
【发布时间】:2013-02-24 06:12:41
【问题描述】:

我是 Meteor 的新手,所以对新手的问题表示歉意。注意我使用的是 CoffeeScript。

我在服务器和客户端“ifs”之上创建了一个新集合,如下所示:

Trivia = new Meteor.Collection("trivia")

在启动时,我将一些文档插入到 if 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}}。

<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 标记中返回了 [object Object]。

我试图只取回问题文本,但如果我使用以下代码,我会得到一个空白页:

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

如果我在控制台中运行 Trivia.findOne({used: false}).question,我会得到我正在寻找的内容,即:“谁在 Mission Impossible 中扮演 Ethan Hunt?”

【问题讨论】:

    标签: meteor


    【解决方案1】:

    答案是汤姆克鲁斯!笑话

    查询返回一个包含您的文档的对象:

    {
      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}) 没有结果的情况。遇到异常时页面变为空白。

    【讨论】:

    • 超级有用的回应 Akshat。谢谢你。效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多