如何将JSON流链接到QML模型,就像使用angularJS一样?
在我的QML中,我有一个Websocket对象,它从服务器接收数据:
WebSocket {
id: socket
url: "ws://3.249.251.32:8080/jitu"
onTextMessageReceived: { var jsonObject = JSON.parse(message) }
onStatusChanged:
if (socket.status == WebSocket.Error) { console.log("Error: " + socket.errorString) }
else if (socket.status == WebSocket.Open) { console.log("Socket open"); }
else if (socket.status == WebSocket.Closed) { console.log("Socket closed"); }
active: false
}
在这个JSON中我有类似的东西:
{ items: [ "FOO", "BAR" ] }
然后我想在标题FOO上显示两个标签,另一个,不出所料,标题为BAR。
如果我在模型中创建一个遍历数组的转发器并为每个条目创建一个选项卡,这项工作很棒:
TabView {
anchors.fill: parent
Repeater {
model: ListModel { id: tabs }
Tab {
title: Caption
Rectangle { color: "red" }
}
}
}
到目前为止,这看起来真的像angularJs。我现在只需要通过websocket接收的数据更新我的模型(角度范围)。 为此,我必须将我的JSON中的选项卡添加到ListModel中:
...
onTextMessageReceived: {
var jsonObject = JSON.parse(message)
tabs.append(jsonObject.ITU.Modalities);
}
...
问题是,每次我从JSON收到更新时,都会添加标签。我不想每次都清除ListView,我认为这将耗费时间。有一种聪明的方法可以巧妙地从JSON更新模型吗?在角度,因为它们都是javascript结构,它们很容易合并。但在这里,我看不到一个简单的方法。