当我按照angular和ember.js的一些内容时,我遇到了双向数据绑定这个术语。 UI上显示的数据与数据库绑定,对一个数据的任何更改都会快速传播到另一个。当我开始学习meteor.js时,我遇到了术语“Reactivity”,这对我来说与双向数据绑定有同样的意义。你能告诉我这两个术语的根本区别吗?
答案 0 :(得分:8)
事实上,反应性比数据绑定更通用。通过反应,您可以以非常简单的方式实现数据绑定,例如
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();
}
}
现在,每次在computation内调用getData
例程时,基本上都在Tracker.autorun
环境中,它会被重新计算。默认情况下, meteor的集合API实现为被动,因此每次从您的数据库中获取一些数据时,您都可以确保它在数据发生变化后立即更新。
另请注意,您可以在没有任何数据库或值的情况下使用上述反应模式,例如,您可以触发和监控事件,状态等。
答案 1 :(得分:1)
这篇维基百科文章将帮助您: http://en.wikipedia.org/wiki/Reactive_programming
它基本上说,特定dataLayers中的数据更改会自动传播。这个范例似乎是通用术语,每个带数据绑定/双向数据绑定的框架都在它上面构建,并为它们的技术赋予了不同的名称。
答案 2 :(得分:0)
我的理解是双向数据绑定是一种反应式编程。 Reactive只是意味着数据中的更改流会驱动操作。无论变更来自DOM和应用程序中的数据,还是其中之一,都无关紧要。