我在按钮单击时创建了一个流星模板,如下所示:
Template.main.events({
'click input': function(event)
{
var templateInstance = Meteor.render(Template.chatfield({name:"james"}));
document.body.appendChild(templateInstance);
}
});
这将创建一个模板,其中填充了来自用户的聊天消息。
我还在这个模板上使用了 .created 方法:
Template.chatfield.created = function()
{
var theData = this.data;
Template.chatfield.users = function()
{
return Guys.find({name:theData.name});
}
}
模板 html 代码如下所示:
<template name="chatfield">
<div id="messages">
{{#each users}}
{{#each messages}}
<p>{{this}}</p>
<br>
{{else}}
<p>No messages inner yet.</p>
{{/each}}
{{else}}
<p>No messages yet.</p>
{{/each}}
</div>
</template>
我现在将用户添加到集合中,例如,只需在 chrome 控制台中编写以下代码:
Guys.insert({name:"james",messages:["hello","world","wow","cool"]});
当我现在按下按钮时,模板会按我想要的方式显示。
问题是,如果我更新“Guys”集合(再次在 chrome 控制台中):
Guys.update({name:"james"},{$push:{messages:'my new message'}})
什么都没发生。当我再次按下按钮时,新消息可见。但我希望它在用户添加消息后立即重新呈现。我究竟做错了什么?