Я все чаще встречаю термин "привязка" и "привязка к живым", особенно в инфраструктурах JavaScript, таких как Ember.js, Can.js, Knockout.js и Backbone.js, и более традиционно в Cocoa и Objective-C, и интересно, что такое привязка? (и что конкретно представляет собой "живая привязка"?).
Похоже, что из свободного смысла мы можем "связывать А с В", а затем мы можем сказать: "А связан с В", а это означает, что изменения в В будут отражены в А - автоматически, без пользователь беспокоится о необходимости создания наблюдателя, но наблюдатель настраивается ранее автоматически и автоматически уведомляется об изменении B.
И когда мы это делаем, мы создаем "привязку".
И с более строгим смыслом кажется, что Cocoa и Objective-C определяют его следующим образом: привязка - это свойство foo
объекта A, и это свойство наблюдает и изменяется к значению свойства bar
объекта B. Как это происходит, нам все равно, и он должен быть скрыт (как черный ящик), и обычно он реализуется с помощью шаблона Observer. Таким образом, слово "привязка" на самом деле означает "свойство", а не действие, и это свойство наблюдает и изменяется на то же значение, что и другое свойство.
И эта привязка не ограничивается элементами UI, связанными с данными. Он может быть внешним, большим элементом пользовательского интерфейса, который содержит меньшую часть элемента пользовательского интерфейса, а внешний элемент пользовательского интерфейса имеет свойство, связанное со свойством внутреннего элемента интерфейса. Или это может быть одно свойство данных, отличных от UI, связанное с другим свойством данных, отличным от UI.
Это то, что такое привязка? А как насчет живой привязки?