Reactivity is in fact more general than data binding. With reactivity you can implement data binding, in a really simple way, e.g.
var myAwesomeData = "some data";
var myAwseomeDependency = new Tracker.Dependency();
var getData = function () {
myAwesomeDependency.depend();
return myAwesomeData;
};
var setData = function(value) {
if (value !== myAwesomeData) {
myAwesomeData = value;
myAwesomeDependency.changed();
}
}
Now, every time the getData
routine is called within a computation, so basically within Tracker.autorun
environment, it gets recomputed. By default the meteor's collection API is implemented to be reactive, so every time fetch some data from you'r database you can be sure that it gets updated as soon as the data changes.
Also note, that you can use the above reactivity pattern without any database or values, so for example you can trigger and monitor events, states and so on.