包含数组的对象的QML ListModel追加中断
QML ListModel append broken for object containing an array?
ListModel
在尝试插入包含数组的JS对象时会产生意外且几乎不稳定的结果:
property ListModel model : ListModel {}
Component.onCompleted: {
var a = [1, 2, 3, 4, 5]
console.log(a)
model.append({"a" : a})
console.log(model.get(model.count - 1))
console.log(model.get(model.count - 1).a)
输出为:
qml: [1,2,3,4,5]
qml: QObject(0x3cccd58)
qml: QQmlListModel(0x3cd0978)
然而,如果数组被连接到一个字符串中,它将按预期工作:
console.log(a)
a = a.join(",")
model.append({"a" : a})
console.log(model.get(model.count - 1))
console.log(model.get(model.count - 1).a)
qml: [1,2,3,4,5]
qml: QObject(0x3d5da60)
qml: 1,2,3,4,5
一些观察结果-数组似乎以某种方式"转换"为QQmlListModel
,它是另一个列表模型实例,而不是被附加到的实例。此外,最初我认为这可能确实是一些自动转换,并期望列表模型包含五个数字,实际上count
是5,但get(0)
返回undefined
。因此,虽然大小与数组的大小相匹配,但没有任何有效的内容。
我很确定这是一个错误,但在提交错误报告之前,我会问是否有人知道发生了什么。
来自ListModel
文档:
ListModel是ListElement定义的一个简单容器〔…〕
如果您随后转到ListElement
:的文档
值必须是简单的常量;字符串(带引号,可选地在对QT_TR_NOOP的调用中)、布尔值(true、false)、数字或枚举值(如AlignText.AligneHCenter)。
相关文章:
- 表追加而不附加最后一个元素
- 高亮显示与数组字符串一起使用时文本插件中断
- AngularJS ui路由器html5模式中断路由
- 如何在jquery中停止在更改时追加值
- 递归函数中断
- JQuery.on(“keydown”)追加到页面时不工作
- Javascript-在文本区域中断,但不在段落中中断
- jQuery[button.class]未检测到用按钮追加行
- 在内部映射值时渲染方法中断
- 中断功能
- 使用jQuery'生成输入字段;s追加
- js”;在“;不按特定顺序追加键/值
- 如何在 ReactJs 中追加到表
- 文本框仅接受十进制值,并且应在十进制后追加2个零
- 使用ajax获取通过FTP上传的文件的文件大小——试图防止ajax中断自身
- 为什么DocumentFragment在追加后被清除
- 遇到错误后,更改检测似乎中断
- 我如何防止错误“;未捕获(在promise中)DOMException:play()请求被对pause()的调用中断&”
- 正在从JQuery追加Laravel Blade
- 包含数组的对象的QML ListModel追加中断