EnginioModel
ImportStatement: import Enginio 1.0
Since: Qt 5.3
Properties
client :EnginioClient
operation :Enginio::Operation
query :QJSValue
Methods
EnginioReplyappend(QJSValue object)
EnginioReplyremove(int row)
EnginioReplysetProperty(int row, string propertyName, QVariant value)
DetailedDescription
importEnginio 1.0
模型的查询属性取一个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()。
EnginioModel的QML版本和C++版本支持同样的函数功能。
PropertyDocumentation
client : EnginioClient
用于这个模型的EnginioClient实例。
operation :Enginio::Operation
用于查询的操作。
query :QJSValue
从云端获取数据填充模型。查阅EnginioClient::query()的文档,获得怎样构建查询的信息。EnginioClient的查询返回的查询数据是一个JSON对象。而模型查询将被视作模型数据。
通常,查询单一的对象类型将返回数据库中该类型的所有对象。模型将每个返回对象表示为一行,查询结果可以是有限的和经过排序的,就像在EnginioClient做的那样。
一个需要注意的要点是,云端并不保持同样的排序。因此,排序和限制仅仅保存到一个插入或删除发生。同时参阅EnginioClient::query()。
MethodDocumentation
EnginioReplyappend(QJSValue object)
增加新对象到模型和数据库。这个函数添加新对象到本地模型缓冲,然后在云端建立异步请求。添加一个对象到云端可能因种种原因失败,所以返回必须被保持并进行错误处理(参阅EnginioReply)。如果操作失败,添加到本地模型缓冲的对象应该被移除。如果模型是可见的,它将让用户看到新的对象在视图中出现,然后消失。它从云端返回EnginioReply。
往模型中添加城市看起来像下面这样操作:
functionaddCity() {
var berlin = {
"objectType":"objects.city",
"name": "Berlin",
"population": 3300000
}
enginioModel.append(berlin)
}
EnginioReplyremove(int row)
在模型和数据库中移除row指定的对象。
这个函数立刻在本地缓存的model中移除对象,同时发送移除请求给云端。从云端返回EnginioReply。同时参阅EnginioClient::remove()。
EnginioReplysetProperty(int row, string propertyName, QVariant value)
改变模型中一个对象的属性。row表示的对象的propertyName属性将被设置成value。本地模型将立刻反映这一变化并蔓延到云端。