2015-07-20 125 views
3

改变,我发现meteor variable watcher我用它是这样的:看,如果变量流星

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

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

它完美。但是,有没有Meteor的方法来观看ReactiveVar?

我只需要观察一个ReactiveVar,而不是连接到Template的整个列表。我需要从流星的模板,助手等中分别观看。

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

回答

8

您可以只使用autorun,这是一种内置方式来创建自定义反应性上下文(每当无功变量发生变化时都会运行该功能)。这里有一个例子:

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

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

,这将无法工作,会有几个ReactiveVar分配给模板。我只需要看一个。 – Kostanos

+1

只有在其中使用的无功变量发生变化时,'autorun'才会再次执行。所以如果只有一个变量被读取,那么它看起来会做你想要的。我误解了这个问题吗? –

+0

这正是我想要的。谢谢。好奇autorun是如何检测到我只想跟踪这个变量而没有其他人在同一个模板上定义的。可能我需要在流星的反应性中挖掘更多。 – Kostanos

1

流星会自动监测响应计算中的任何ReactiveVar。无功的计算包括:

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

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

+0

这不是我的问题的答案。我要求独立观看流星模板,帮手等特定变量。 我需要添加自己的观察者 – Kostanos