观察Meteor中变量是否发生变化

时间:2015-07-20 02:32:42

标签: javascript meteor

我找到meteor variable watcher,我就这样使用它:

Template.restaurantMap.onCreated(function() {
  this.location = ReactiveVar;

  this.watch("location", function(value){
    console.log('value changed', value);
  });
});

完美无缺。但是,有没有Meteor的方式来观看ReactiveVar?

我只需要观看一个ReactiveVar,而不是整个附加到Template的列表。我需要与Meteor的模板,助手等分开观看。

如果变量发生变化,我需要自己回调。

2 个答案:

答案 0 :(得分:8)

您可以使用autorun,这是一种内置方式来创建自定义反应上下文(每当反应变量发生变化时运行的函数)。这是一个例子:

Template.restaurantMap.onCreated(function() {
  this.location = new ReactiveVar;

  var self = this;
  this.autorun(function() {
    return console.log('location changed!', self.location.get());
  })
});

答案 1 :(得分:1)

流星会自动监视反应计算中的任何ReactiveVar。反应计算包括:

  • 模板助手
  • 铁路由器挂钩
  • Tracker.autorun
  • this.autorun

对我来说,模板助手几乎总是足够的。如果不是,我会使用Tracker.autorun或this.autorun(来自模板onRendered方法)。