我正在开发我的第一个 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}} 标记,它是模板消息,所以这是对的。但不会更新..
你们有线索吗?
最佳答案
只有集合可以通过 Meteor 中的发布/订阅跨浏览器同步。
也许您可以拥有一个带有 is_typing
字段的 Users
集合,并用它创建一个响应式(Reactive)模板助手?
非常基本的示例:
Template.messages.is_typing = function() {
return Users.find({is_typing:true}).count() > 0
};
在模板中
<template name="messages">
{{#if is_typing}}
typing
{{else}}
idle
{{/if}}
</template>
关于javascript - Meteor:在所有浏览器上更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603145/