如何使用 Javascript 为 QML ListModel 添加元素?

如何使用 Javascript 为 QML ListModel 添加元素?

我已经创建了一个嵌套的ListModel。

ListModel {
    id: mainModel
    ListElement {
        mainName: "Alphabet"

        subAlpha: [
            ListElement { alphaName: "A" },
            ListElement { alphaName: "B" }
        ]
    } } 

如何使用 javascript 在内部列表中添加元素?换句话说,如何将元素添加到 subAlpha 模型?

答案1

使用subAlpha.append()。此方法以 Javascript 对象作为参数,并使用该对象使用这些键和值创建一个新的 ListElement。

一个工作示例:

import QtQuick 2.0

ListView {
    width: 200
    height: 200

    ListModel {
        id: mainModel
        ListElement {
            name: "Alphabet"
            subAlpha: [
                ListElement {
                    alphaName: "A"
                },
                ListElement {
                    alphaName: "B"
                }
            ]
        }
    }

    model: mainModel
    delegate: Column {
        Text { text: name }
        Row {
            Repeater {
                model: subAlpha
                Text { text: alphaName }
            }
        }
    }

    Component.onCompleted: {
        mainModel.get(0).subAlpha.append({alphaName: "C"})
    }
}

答案2

使其成为有效的 JSON/Javascript

a = {
  id: mainModel,
  ListElement: {
    mainName: "Alphabet",

    subAlpha: [
       { alphaName: "A" },
       { alphaName: "B" }
    ]
  } 
} 

然后添加到 subAlpha

a.ListElement.subAlpha.push({ alphaName: "C" })

相关内容