javascript - Meteor:在所有浏览器上更新

标签 javascript meteor

我正在开发我的第一个 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/

相关文章:

javascript - 使用 howler.js 和 meteor 框架播放/暂停

java - meteor 和java应用程序数据推送

javascript - 在 meteor 中有没有一种方法可以访问空格键中的数组索引

meteor - 授予协作者运行meteor部署的权限

javascript - 动态填充html中的json数据

javascript - MeteorJS 身份验证什么时候到位?

javascript - 从 javascript 访问时,HTML 输入类型 ="number"仍返回字符串

javascript - 防止输入类型受到 XSS 攻击

javascript - 在元素上单击触发事件触发输入复选框两次

javascript - Bootstrap 模态不透明度仅适用于特定的 div,不适用于整个 body