如何创建 Meteor Template Helper 来检查相等性?
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
它工作正常,但我想 "style the message differently" 取决于
消息的所有者是否等于 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 函数(return 如果 message.owner == currentUser
为真,否则为假)
您通常会在模板助手中编写这些检查,如下所示:
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 应用程序的客户端实现一个全局 "equals" 助手,但不幸的是它还没有内置在 Meteor Spacebars 中:
Template.registerHelper('equals',
function(v1, v2) {
return (v1 === v2);
}
);
这样,您可以调用:
{{#if equals text.owner currentUser._id}}
得到相同的结果。
KyleMit 为您在 Meteor 中的所有相等性检查需求写了 a lengthy answer。
我正在制作一个聊天网络应用程序。 人们可以使用 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
它工作正常,但我想 "style the message differently" 取决于 消息的所有者是否等于 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 函数(return 如果 message.owner == currentUser
为真,否则为假)
您通常会在模板助手中编写这些检查,如下所示:
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 应用程序的客户端实现一个全局 "equals" 助手,但不幸的是它还没有内置在 Meteor Spacebars 中:
Template.registerHelper('equals',
function(v1, v2) {
return (v1 === v2);
}
);
这样,您可以调用:
{{#if equals text.owner currentUser._id}}
得到相同的结果。
KyleMit 为您在 Meteor 中的所有相等性检查需求写了 a lengthy answer。