MeteorJS - 观察服务器变量变化并更新模板值

MeteorJS - Watch for server variable change and update the template value

我有疑问。不确定是否可行,也没有找到明确的答案。

是否可以将 "watcher" 添加到服务器变量以便在值更改时更新视图(客户端)?

假设我有一个 var counter = 0 和一个每分钟更新计数器变量的超时函数。

我想在客户端更新一个<span>{{counter}}</span>。我需要向此服务器变量添加一个 "watcher" 并使其 反应。

提前致谢!

如果您的 var counter = 0 是服务器端代码,它不会发送给客户端。 任何你想推送给客户端的服务器端数据都应该在 Meteor Collection 中。然后使用典型的发布和订阅向客户端发送更新。

如果您将counter设为会话变量,即Session.set('counter', counter++),那么它将只存在于客户端。不同的客户端不会有counter

的同步值

执行此操作的正确方法是创建一个集合并将该变量存储在集合中(即使这意味着您有一个包含一个文档的集合)。

上server/client常用代码:

Counter = new Mongo.Collection("counter");

在客户端做一个助手:

Template.myTemplate.helpers({
  counter: function () {
    return Counter.findOne();
  }
});

在服务器上确保有一个计数器:

if (Counter.find().count() === 0) {
  Counter.insert({value: 0});
}

然后,在服务器上增加计数器:

Counter.update({}, {$inc: {value: 1}});

如果您想跟踪多个计数器,您可以使用类似的方法 - 只需将多个计数器插入集合并通过 _id 字段引用它们。