QML:console.log()无法识别委托的索引属性

时间:2016-11-19 01:10:03

标签: qt qml qtquick2

我的委托组件的索引属性在console.log()函数中使用时无法识别:

onClicked: {
    identities.qml_del_account(index);
    console.log(index);
}
/*Application output:*/
qrc:/Accounts2.qml:74: ReferenceError: index is not defined

第74行是这样的:

console.log(index);

为什么它适用于第一行但是在第二行失败?这两行都位于相同的javascript函数中。

完整的QML代码是:

Identities {
    id: identities
}
ListView {
            id: list_identities
            width: list_area.width
            height: 100
            model: identities
            delegate: Rectangle {
                    id: identities_delegate
                    height: 40
                    width: parent.width
                    Text {
                        id: identities_item
                        height: parent.height
                        anchors.left: parent.left
                        width: 100
                        text: email
                    }
                    Image {
                        source: "qrc:/images/dots-menu.png"
                        id: toolbtn_img
                        anchors.right: parent.right
                        width: 24
                        height: 24
                        MouseArea {
                            width: parent.width
                            height: parent.height
                            onClicked: {
                                identities.qml_del_account(index);
                                console.log(index);
                            }
                        }
                    }
            }
}

该模型在C ++中定义,并且它包含了函数qml_del_account(),该函数工作正常,我并没有抱怨它。

1 个答案:

答案 0 :(得分:1)

我的猜测是:qml_del_account删除当前委托的模型条目,随后将其删除,因此日志将在不再存在的对象模型条目上下文中执行。

尝试颠倒日志的顺序并调用模型的函数。

一般情况下,我还建议通过model访问者引用代表中的模型数据来提高可读性,例如model.index