解析子if语句后,Repeater丢失模型定义

时间:2018-02-27 13:32:11

标签: qt qml qt5 qtquick2

我有以下示例代码:

Item {
    id: container

    property bool leftOptionEnabled: false
    property bool rightOptionEnabled: false

    property string leftOptionText: ""
    property string rightOptionText: ""

    signal leftOptionPressed()
    signal rightOptionPressed()

    Grid {
        columns: 3

        Repeater {
            model: [
                { value: "1", offset: 1 },
                { value: "2", offset: 0 },
                { value: "3", offset: 1 },
                { value: "4", offset: 1 },
                { value: "5", offset: 0 },
                { value: "6", offset: 2 },
                { value: "7", offset: 1 },
                { value: "8", offset: 0 },
                { value: "9", offset: 1 },
                { value: "", offset: container.leftOptionEnabled && container.leftOptionText ? 1 : 0 },
                { value: "0", offset: 0 },
                { value: "", offset: container.rightOptionEnabled && container.rightOptionText ? 2 : 0}
            ]

            delegate: Item {
                id: something
                width: 200
                height: 200

                Text {
                  anchors.centerIn: parent
                  text: model.value
                }

                MouseArea {
                    anchors.fill: parent

                    onPressed: {
                        if (model.index === 9)
                            container.leftOptionPressed();

                        if (model.index === 11)
                            container.rightOptionPressed();
                    }
                }
            }
        }
    }
}

如果我动态添加leftOption(所以onPressed + MouseArea)和rightOption然后触发点击,leftOptionText的{​​{1}}信号会按预期停止工作对于左边的那个。

我发生了这样的错误:leftOptionEnabled

在第一个ReferenceError: model is not definedindex可用后,我无法访问modelif

通过modelData检查是否存在model(例如来自console.log)并未显示任何异常,正如预期的那样,我设法通过返回信号而不是只是打电话给他们。

即使解决方法让我到达我需要的地方,我仍然想了解错误发生的原因以及如何在没有“技巧”的情况下实际防止错误。

任何人都可以帮我理解这个问题吗?这是一个错误吗?

0 个答案:

没有答案