gpt4 book ai didi

javascript - meteor JS : How do I access the previous record in a collection?

转载 作者:可可西里 更新时间:2023-11-01 10:31:24 25 4
gpt4 key购买 nike

我有一个集合中的消息列表。在呈现集合中的每条消息时,我想将消息的时间戳和 userId 与上一条消息进行比较。但是,我不确定如何访问数据来进行比较。任何建议将不胜感激。

这是我的模板:

<template name="messageList">
<ul>
{{#each messages}}
{{>messageItem}}
{{/each}}
</ul>
</template>

<template name="messageItem">
<li>
<p class="{{nameVisibility}}">{{userName}}</p>
<p>{{body}}</p>
</li>
</template>

这是我的助手文件:

Template.messageItem.helpers({
nameVisibility: function() {

//Not sure how to query the previous message in relation to this one.
previousMessage = Messages.findOne(...);
if (this.userId != previousMessage.userId) {
return false;
else {
return "hideName";
}
}
});

最佳答案

我不同意这篇文章中的其他答案,该答案非常低效并且需要额外的时间迭代整个 Messages 集合。

我认为最好的方法是在 Template.messageItem.rendered 回调中使用常规 jQuery。您可以找到前一个元素,使用 UI.getElementData 找到它的数据,然后根据需要删除或添加用户名。在 Meteor 0.8.0+(Blaze 渲染引擎)上,您的编辑将保留。像这样:

Template.messageItem.rendered = function() {
// this.firstNode is the <li> tag; .prev() grabs its previous sibling
prevMessage = $(this.firstNode).prev();
prevData = UI.getElementData(prevMessage[0]); // but make sure prevMessage[0] exists
if (prevData.userName === this.data.userName)
this.$(".username").remove(); // Make sure you put the ".username" class on the prefix
}

关于javascript - meteor JS : How do I access the previous record in a collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com