EnginioModel Тип QML
Упрощает доступ к коллекциям объектов Подробнее...
| Оператор импорта: | import Enginio 1.0 |
| С: | Qt 5.3 |
Свойства
Методы
- EnginioReply append(QJSValue object)
- EnginioReply remove(int row)
- EnginioReply setProperty(int row, string propertyName, QVariant value)
Подробное описание
import Enginio 1.0
Свойство query модели принимает JSON-объект.
Чтобы получить модель каждого объекта типа "objects.city", используйте:
EnginioModel {
id: enginioModel
client: client
query: { "objectType": "objects.city" }
} Затем можно использовать обычный Qt Quick ListView для отображения списка городов, содержащихся в бэкенде.
ListView {
anchors.fill: parent
model: enginioModel
delegate: Text {
text: name + ": " + population
}
} Обратите внимание, что к свойствам объектов можно напрямую обратиться. В этом примере в бэкенде имеется тип "objects.city" с двумя свойствами: "name" и "population".
Модель поддерживает несколько функций для изменения данных, например, append(), remove(), setProperty().
QML-версия EnginioModel поддерживает те же функции, что и C++-версия. EnginioModel C++
Документация по свойствам
client : EnginioClient
Экземпляр EnginioClient, используемый для этой модели.
operation : Enginio::Operation
Операция, используемая для query.
query : QJSValue
Запрос, используемый для заполнения модели данными из бэкенда.
См. документацию EnginioClient::query() для получения информации о построении запроса.
Хотя реализация EnginioClient query() возвращает данные запроса как JSON-объект, для модели запрос будет интерпретирован как данные модели.
Обычно запрос выполняется для одного типа объекта и возвращает все объекты в базе данных этого типа. Затем модель будет представлять каждый возвращённый объект как одну строку. Он может быть ограничен и отсортирован, как и его аналог в EnginioClient.
Важно отметить, что модель не может сохранить ту же сортировку, что и бэкенд, поэтому сортировка и лимиты сохраняются только до тех пор, пока не произойдёт вставка или удаление.
См. также EnginioClient::query().
Документация по методам
EnginioReply append(QJSValue object)
Добавить новый object в модель и базу данных.
Эта функция добавляет новый объект в кэш локальной модели и отправляет асинхронный запрос бэкенду.
Поскольку добавление объекта в базу данных может завершиться неудачей по разным причинам, возвращаемый ответ необходимо сохранить и использовать для обработки ошибок (см. EnginioReply). Если операция завершается неудачей, объект, который должен был быть добавлен, снова удаляется из локальной модели. Если модель используется в представлении, а бэкенд не принимает объект из-за нарушения валидатора, пользователю будет видно, как появляется и исчезает новая строка в представлении.
Возвращает EnginioReply от бэкенда
Чтобы добавить объект "city" в модель, добавив его:
function addCity() {
var berlin = {
"objectType": "objects.city",
"name": "Berlin",
"population": 3300000
}
enginioModel.append(berlin)
} EnginioReply remove(int row)
Удаляет строку row из модели и базы данных.
Эта функция немедленно удаляет строку row из локального кэша и отправляет запрос на удаление в бэкенд Enginio.
Возвращает EnginioReply от бэкенда.
См. также EnginioClient::remove().
EnginioReply setProperty(int row, string propertyName, QVariant value)
Изменение свойства объекта в модели
Свойство propertyName объекта в строке row будет установлено в value. Модель немедленно отразит изменение локально и в фоновом режиме распространит изменение на сервер.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-enginio-enginiomodel.html