2015-07-20 61 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