Задать вопрос

В чем разница между One-Way Binding и Two-Way Binding?

Друзья,

Немного странный вопрос задам.

Есть одностороння привязка, когда интерфейс отображает данные из модели, и данные в модели меняются только сверху, т.е. в результате обработки события меняется модель, и в результате рисуется интерфейс с уже новыми данными.

Есть двухсторонняя, когда интерфейс может изменить модель, и в интерфейсе отобразятся новые данные из модели.

Считается что разница в направлении изменения данных, т.е. в одностороннем интерфейс не может менять модель, а в двухстороннем может.

Теперь вопрос на миллион. В любом случае двухсторонний биндинг под капотом имеет привязку к событиям (иначе как изменить модель), т.е. по своей логике это тоже самое, т.е. есть модель, затем подвязываемся на событие, в результате обработки события меняется модель, и затем рисуем интерфейс с новыми данными. Тоже самое, что и односторонняя привязка, только обычно это делается под капотом (вроде Ангуляра), и для разработчиков это видно как "двухсторонняя" привязка.

Так в чем разница между ними?
  • Вопрос задан
  • 3078 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Есть одностороння ... т.е. в результате обработки события меняется модель

Есть двухсторонняя, когда интерфейс может изменить модель, и в интерфейсе отобразятся новые данные из модели.

И то, и то - происходит через событие.

Вопрос лишь в том, на что именно влияет это событие:
1. Если только на данные (через методы, например) - это односторонний
2. Если сначала на модель (правит логику работы с данными и затем, сразу на данные - п.1) - двухсторонний.
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Понимать надо буквально, и не надо ничего выдумывать и фантазировать, фантазировать надо над чем-то другим. При односторонней связи одна сторона реагирует на изменения, вторая нет. При двусторонней они обе реагируют на изменения друг друга.

Пример с формами. Вот есть данные, которые отображаются в поле ввода. При изменении данных где-то в коде, изменения отображаются в поле ввода. Но при изменении кем угодно поля ввода, данные в коде не меняются. Это и есть односторонняя связь. При двусторонней данные будут менять при вводе в поле ввода.
Ответ написан
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Single Source of Truth. One-Way Binding позволяет больше доверять модели. Этот слой абстракции выше event-loop, под капот просто незачем заглядывать.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы