簡體   English   中英

如何創建流星模板助手來檢查平等性?

[英]How Do I Create Meteor Template Helper to Check Equality?

我正在制作一個聊天網絡應用程序。 人們可以使用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)

通常,您將在模板幫助程序中編寫這些檢查,如下所示:

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 Spacebars中:

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

這樣,您將調用:

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

並得到相同的結果。

KyleMit為您在Meteor中的所有平等檢查需求寫了一個冗長的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM