【问题标题】:What is difference between two way data binding and reactivity?两种方式数据绑定和反应性有什么区别?
【发布时间】:2013-12-10 05:04:50
【问题描述】:
当我关注 angular 和 ember.js 的一些 tuts 时,我遇到了术语双向数据绑定。 UI 上显示的数据与数据库绑定,对其中一个的任何更改都会快速传播到另一个。当我开始学习meteor.js 时,我遇到了术语“反应性”,这对我来说与双向数据绑定具有相同的意义。你能告诉我这两个术语的根本区别吗?
【问题讨论】:
标签:
angularjs
data-binding
ember.js
meteor
reactive-programming
【解决方案2】:
反应性实际上比数据绑定更通用。通过反应性,您可以以非常简单的方式实现数据绑定,例如
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 被实现为响应式,因此每次从您的数据库中获取一些数据时,您都可以确保它在数据更改时立即更新。
另外请注意,您可以在没有任何数据库或值的情况下使用上述反应模式,例如您可以触发和监控事件、状态等。
【解决方案3】:
我的理解是双向数据绑定是反应式编程的一种形式。反应性只是意味着数据中的变化流驱动行动。更改是来自应用程序中的 DOM 和数据,还是来自其中之一,并不重要。