0

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. 因此,虽然大小与数组的大小匹配,但没有任何有效内容。

我很确定这是一个错误,但是在提交错误报告之前我会问是否有人知道发生了什么。

4

1 回答 1

0

文档_ListModel

ListModel 是 ListElement 定义的简单容器 [...]

如果您然后转到以下文档ListElement

值必须是简单的常量;字符串(在 QT_TR_NOOP 调用中被引用并且可选地)、布尔值(true、false)、数字或枚举值(例如 AlignText.AlignHCenter)。

于 2016-05-06T10:31:15.090 回答