【问题标题】:#each for Meteor.js template#each 用于 Meteor.js 模板
【发布时间】:2015-01-15 06:07:32
【问题描述】:

我正在努力让用户只看到他们尚未回答的问题。我已经设置好了,所以当用户回答问题时,它会使用questionsAnswered 更新他们的帐户,并更新问题usersTrueusersFalse 数组。我正在使用每个模板函数来循环我的问题集合以显示所有活动问题。

我尝试向.find({active: true}) 添加一些额外的参数,但这不起作用。

我的每个循环都有一个助手。我试过添加一个 if else 不起作用。

我更愿意遍历用户的questionsAnswered 数组,看看他们是否已经回答了问题。

模板

<template name="questionCard">
{{#each questions}}
        <div id="{{_id}}" class="card">
            {{ que}}
        </div>
        <div>
            <a class="no option" href="#">No</a>
            <a class="yes option" href="#">Yes</a>
        </div>
{{/each}}
</template>

Javascript(帮助)代码:

Template.questionCard.helpers({
'questions': function(){
    var currentUser = Meteor.userId();
    return QuestionList.find({active: true});
}
});

我希望卡片在他们回答后消失,但如果循环修复,问题应该会自行解决。

任何帮助将不胜感激。

【问题讨论】:

  • 你在 html 模板中得到了什么结果?仅供参考:你在帮助程序中返回一个光标,尝试将 QuestionList.find({acitve:true}).fetch()作为数组获取
  • @Rajanand02 这实际上是正确的,Meteor 渲染引擎使用光标比使用 fetch 返回的数组更好。
  • QuestionList收藏有订阅吗?
  • 是的,有订阅。我该如何使用 fetch 呢?我以为它只适用于 javascript 控制台。
  • 请发布您的出版物和订阅。

标签: javascript meteor meteor-blaze spacebars meteor-helper


【解决方案1】:

确保执行以下操作:

1.创建一个服务器端文件,例如 server/publications.js,以保存发布声明

2。在该文件中定义它:

Meteor.publish("questionList", function() {
  return QuestionList.find({});
});

【讨论】:

    【解决方案2】:

    我最终从 crater.io 的某个人那里得到了一些帮助。我试图向 javascript 端添加信息以检查 userId 是否不在数组中。我被介绍给 $nin 运算符,所以我的代码最终看起来像这样。

    感谢您的回复!

    Template.questionCard.helpers({
    'questions': function(){
        var currentUser = Meteor.userId();
        return QuestionList.find({active: true, usersTrue: {$nin: [currentUser]}, 
        usersFalse: {$nin: [currentUser]}});
    }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多