我最近越来越多地看到术语“绑定”和“实时绑定”,尤其是在 Ember.js、Can.js、Knockout.js 和 Backbone.js 等 JavaScript 框架中,以及更传统的 Cocoa 和 Objective -C,想知道绑定到底是什么?(究竟什么是“实时绑定”?)。
好像从广义上讲,我们可以“绑定 A 到 B”,然后我们可以说,“A 绑定到 B”,也就是说 B 的变化会自动反映到 A 上——自动,用户不用担心必须设置观察者,但观察者会更早自动设置并在 B 更改时自动通知。
当我们这样做时,我们正在创建一个“绑定”。
从更严格的意义上来说,Cocoa 和 Objective-C 似乎是这样定义的:绑定是对象 A 的一个属性 foo
,这个属性观察并改变为bar
对象 B 的属性值。它是如何发生的,我们不知道'不在乎,它应该是隐藏的(就像一个黑匣子),通常它是由观察者模式实现的。所以“绑定”这个词实际上意味着一个“属性”,而不是一个动作——并且这个属性观察并被更改为与另一个属性相同的值。
而且这种绑定不限于绑定到数据的 UI 元素。它可以是包含较小部分 UI 元素的外部较大 UI 元素,并且外部 UI 元素具有绑定到内部 UI 元素属性的属性。或者它可以是绑定到另一个非 UI 数据属性的一个非 UI 数据属性。
这就是绑定吗?那么活绑定呢?