如何将上下文变量分配给 QML 中同名的 属性?

How to assign a context-variable to a property with the same name in QML?

这是以下代码的结果:

main.qml

import QtQuick 2.8 

Item {
    Reusable {
        index: 1234      // reusable with a custom index
    }   

    ListView {
        anchors { fill: parent; margins: 20; topMargin: 50 }
        model: 3

        // Reusable with an index given by the ListView
        delegate: Reusable {
            index: index // <- does not work, both 'index' point to 
                         //    the index property
        }   
    }   
}

Reusable.qml

import QtQuick 2.8 

Text {
    property int index
    text: "Line " + index
}

问题描述:

ListView 在每次迭代中将 0、1、2 等赋值给变量 index。但是,因为我将它分配给 属性,所以这个变量被隐藏了,我无法访问它。

如果我从 Reusable.qml 中删除 property int indexListView 有效,但在 ListView 之外使用 Reusable 将不再有效。

有没有办法分配index: index

(我可以重命名 属性,但我想避免这种情况。)

您可以通过 model 前缀寻址模型相关数据。

ListView {
    model: 3

    delegate: Reusable { index: model.index }
}

我的建议是即使没有歧义也这样做,以提高可读性。 IE。阅读代码的开发人员可以立即看到哪些数据是本地数据属性,哪些数据是由模型提供的。