Meteor 中的简单聊天程序。当新消息进来时,我如何连接一个回调来触发?
Simple chat program in Meteor. How do I hook up a callback to fire when new messages come in?
我正在开发这个简单的聊天应用程序来学习 Meteor,我有点卡在这里。我有一个运行良好的聊天室,但我无法连接一个函数以在另一个人进行聊天时触发。我想自动滚动到 window 的底部并在发生这种情况时更新网站图标通知。我有一个模板 chatWindow
,看起来像这样:
<template name="chatWindow">
<div class="textWindow">
{{#each messages}}
<span class="username {{#if me}}me{{/if}}">{{username}}</span><span class="message">{{message}}</span>
<br />
{{/each}}
</div>
<br />
<form>
{{#if currentUser}}
<input type="text" name="chatTextBox" id="chatTextBox" />
{{/if}}
</form>
</template>
{{#each messages}}
块非常适合自动抓取更新的聊天消息集合,但如何在更新时触发事件?我试过 Template.chatWindow.onRender()
和 Template.chatWindow.rendered
但它们都只在第一次触发。
观察通常是前往此处的方式。假设 messages
存储在集合 Messages
中,您可以执行以下操作:
Messages.find().observe({
added: function (document) {
// Set some Session vars or do some jquery or update other collections
}
});
Observe 在客户端和服务器端都可以工作,也可以为 document changed
事件和 document removed
事件注册回调。
我正在开发这个简单的聊天应用程序来学习 Meteor,我有点卡在这里。我有一个运行良好的聊天室,但我无法连接一个函数以在另一个人进行聊天时触发。我想自动滚动到 window 的底部并在发生这种情况时更新网站图标通知。我有一个模板 chatWindow
,看起来像这样:
<template name="chatWindow">
<div class="textWindow">
{{#each messages}}
<span class="username {{#if me}}me{{/if}}">{{username}}</span><span class="message">{{message}}</span>
<br />
{{/each}}
</div>
<br />
<form>
{{#if currentUser}}
<input type="text" name="chatTextBox" id="chatTextBox" />
{{/if}}
</form>
</template>
{{#each messages}}
块非常适合自动抓取更新的聊天消息集合,但如何在更新时触发事件?我试过 Template.chatWindow.onRender()
和 Template.chatWindow.rendered
但它们都只在第一次触发。
观察通常是前往此处的方式。假设 messages
存储在集合 Messages
中,您可以执行以下操作:
Messages.find().observe({
added: function (document) {
// Set some Session vars or do some jquery or update other collections
}
});
Observe 在客户端和服务器端都可以工作,也可以为 document changed
事件和 document removed
事件注册回调。