Учебники

KnockoutJS — MVVM Framework

Model-View-ViewModel (MVVM) — это шаблон архитектурного проектирования для разработки программных приложений. MVVM был разработан Microsoft Architect John Gossman в 2005 году. Этот шаблон является производным от шаблона Model-View-Controller (MVC). Преимущество MVVM заключается в том, что он отделяет графический пользовательский интерфейс прикладного уровня от бизнес-логики. MVVM отвечает за обработку данных из базовой модели таким образом, что они очень легко представляются и управляются. ViewModel в MVVM представляет собой абстрактную версию состояния и действий View.

Классы представления не знают, что классы Model и ViewModel существуют, также Model и ViewModel не знают, что представление существует. Модель также не знает, что ViewModel и View существуют.

Архитектура

MVVM Архитектура

Посмотреть

Представление — это графический интерфейс пользователя, созданный с использованием языка разметки для представления данных. View привязывается к свойствам ViewModel через концепцию привязки данных, которая косвенно связывается с данными модели. Представление не должно быть изменено для любого изменения, сделанного во ViewModel. Изменения, внесенные в данные в ViewModel, автоматически распространяются в View благодаря привязке.

модель

Модель — это данные домена или бизнес-объект, который содержит данные в реальном времени. Модель не несет поведения. Поведение в основном реализовано в бизнес-логике.

ViewModel

ViewModel — это центральное место, где данные из логики отображения модели и представления связаны друг с другом. ViewModel содержит динамическое состояние данных. Между View и ViewModel существует неявная привязка для связи друг с другом. Эта привязка включает декларативные данные и привязку команд. Синхронизация View и ViewModel достигается с помощью этой привязки. Любые изменения, сделанные во View, отражаются во ViewModel, и аналогично любое изменение во ViewModel автоматически отражается во View. Существование этого механизма двустороннего связывания является ключевым аспектом этого шаблона MVVM.