我有以下示例代码:
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 defined
,index
可用后,我无法访问model
或if
。
通过modelData
检查是否存在model
(例如来自console.log
)并未显示任何异常,正如预期的那样,我设法通过返回信号而不是只是打电话给他们。
即使解决方法让我到达我需要的地方,我仍然想了解错误发生的原因以及如何在没有“技巧”的情况下实际防止错误。
任何人都可以帮我理解这个问题吗?这是一个错误吗?