我正在开发我的第一个Meteor应用程序,但我无法弄清楚如何在所有浏览器中更新内容。
情况就是这样:当一个人打字时,我希望在所有浏览器中显示“打字...”(对每个用户都这样),但我无法弄清楚如何做到这一点。
到目前为止,这是我的代码:
Messages = new Meteor.Collection("messages");
if( Meteor.isClient ) {
// Templating
Template.messages.entries = function() {
return Messages.find();
};
// Events
Template.messages.events({
'click #new_post' : function() {
var new_message = document.getElementById("new_message").value;
if( new_message.length > 0 ) {
Messages.insert({ text: new_message });
document.getElementById("new_message").value = "";
}
},
'focus #new_message' : function() {
// Say "typing..."
},
'blur #new_message' : function() {
// Say nothing
}
});
}
正如您所看到的,我想说:在关注文本字段时输入。现在我尝试过这个(但是没有用):
'focus #new_message' : function() {
// Say "typing..."
Template.messages.typing = function() {
return "typing...";
};
},
但它没有更新我的HTML。我的模板中有{{typing}}标签,这是模板消息,所以这是正确的。但它不会更新..
你们有一个线索吗?
答案 0 :(得分:2)
仅在Meteor中使用发布/订阅跨浏览器同步集合。
也许你可以拥有Users
字段和is_typing
字段之类的内容,并用它创建一个反应式模板助手?
非常基本的例子:
Template.messages.is_typing = function() {
return Users.find({is_typing:true}).count() > 0
};
并在模板中
<template name="messages">
{{#if is_typing}}
typing
{{else}}
idle
{{/if}}
</template>