[英]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.