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
一些观察 - 似乎数组以某种方式“转换”为 a QQmlListModel
,它是另一个列表模型实例,而不是附加到的那个。另外,最初我虽然这可能确实是一些自动转换,并期望列表模型包含五个数字并且确实count
是 5,但是get(0)
返回一个undefined
. 因此,虽然大小与数组的大小匹配,但没有任何有效内容。
我很确定这是一个错误,但是在提交错误报告之前我会问是否有人知道发生了什么。