Резюме к главе об архитектуре модель-представление-делегат
В этой главе мы рассмотрели модели, представления и делегаты. Для каждой записи данных в модели представление создает экземпляр делегата, визуализирующего эти данные. Это отделяет данные от представления.
Модель может быть одним целым числом, где переменная index
предоставляется делегату. Если в качестве модели используется массив JavaScript, переменная modelData
представляет данные текущего индекса массива, а index
содержит индекс. Для более сложных случаев, когда каждый элемент данных должен предоставлять несколько значений, лучшим решением является ListModel
, заполненная элементами ListElement
.
Для статических моделей в качестве представления можно использовать повторитель, Repeater
. Его легко комбинировать с позиционером, таким как Row
, Column
, Grid
или Flow
, для создания частей пользовательского интерфейса. Для динамических или больших моделей данных больше подходит такия представления, как ListView
, GridView
или TableView
. Они создают экземпляры делегатов «на лету» по мере необходимости, уменьшая количество элементов, находящихся в сцене одновременно.
Разница между GridView
и TableView
заключается в том, что табличное представление предполагает модель табличного типа с несколькими столбцами данных, а представление сетки показывает модель типа списка в сетке.
Делегаты, используемые в представлениях, могут быть статическими элементами со свойствами, привязанными к данным из модели, или они могут быть динамическими, состояния которых зависят от того, находятся ли они в фокусе или нет. Используя сигналы представления onAdd
и onRemove
, их можно даже анимировать при появлении и исчезновении.