双向数据绑定和反应性有什么区别?

时间:2013-11-25 12:52:16

标签: angularjs data-binding ember.js meteor reactive-programming

当我按照angular和ember.js的一些内容时,我遇到了双向数据绑定这个术语。 UI上显示的数据与数据库绑定,对一个数据的任何更改都会快速传播到另一个。当我开始学习meteor.js时,我遇到了术语“Reactivity”,这对我来说与双向数据绑定有同样的意义。你能告诉我这两个术语的根本区别吗?

3 个答案:

答案 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和应用程序中的数据,还是其中之一,都无关紧要。