如何创建流星模板助手以检查平等性?

时间:2015-07-08 09:59:08

标签: javascript meteor spacebars meteor-helper

我正在制作聊天网络应用。 人们可以使用facebook登录并进行交谈(将消息插入mongoDB)。

显示文字很简单: 的javascript:

  messages: function () {
    return Messages.find({}, {sort: {createdAt: 1}});
  } 

每条消息都有以下属性:

text: text,
      createdAt: new Date(),            // current time
      owner: Meteor.userId(),           // _id of logged in user
      username: Meteor.user().profile.name

它工作正常,但我想根据情况“以不同的方式设置信息” 消息的所有者是否等于currentUser(即,它是我的消息还是其他消息)

例如,我希望我的消息是float:right和其他消息是float:left

我认为代码可能看起来像这样:

  {{#if mymsg}}
    <div class="msgdiv_my">
       <span class="message">{{text}}</span>
    </div>
  {{else}}
    <div class="msgdiv">
      <span class="message">{{text}}</span>
    </div>
  {{/if}}

在哪里以及如何编写mymsg函数(如果message.owner == currentUser应该返回True,否则返回false)

1 个答案:

答案 0 :(得分:1)

您通常会在模板助手中编写这些检查,如下所示:

Template.myTemplate.helpers({
  ownDocument: function (doc) {
    return doc.owner === Meteor.userId();
  }
});

然后在myTemplate中,像这样打电话给你的助手:

<template name="myTemplate">
  {{#if ownDocument text}}
    <div class="msgdiv_my">
       <span class="message">{{text}}</span>
    </div>
  {{else}}
    <div class="msgdiv">
      <span class="message">{{text}}</span>
    </div>
  {{/if}}
</template>

虽然您可能希望为您的meteor应用程序的客户端实现全局“等于”帮助程序,但遗憾的是它还没有在Meteor Spacebars中构建:

Template.registerHelper('equals',
    function(v1, v2) {
        return (v1 === v2);
    }
);

这样,您可以致电:

{{#if equals text.owner currentUser._id}}

得到相同的结果。

KyleMit为Meteor中的所有等级检查需求写了a lengthy answer