Meteor:在所有浏览器中更新

时间:2012-09-26 13:43:32

标签: 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}}标签,这是模板消息,所以这是正确的。但它不会更新..

你们有一个线索吗?

1 个答案:

答案 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>