我在ListItemComponent中访问公开的qml上下文属性变量时遇到问题。
e.g
applicationUI类:
qml-> setcontextProperty( “activeFrame”,mActiveFrame);
main.qml
ListView{
id:model
listItemComponents: [
ListItemComponent {
id: listComponent
type:"item"
customListItem{
// here,i want to update cover.
// but error occur ,ReferenceError: Can't find variable: activeFrame
onPlayerStarted:{
activeFrame.isPlaying(true)
}
onPlayerStopped:{
activeFrame.isPlaying(false)
}
}
}
]
}
感谢
答案 0 :(得分:1)
我找到了解决方案。
要在ListitemComponent中使用activeFrame,我们必须在listview中创建新函数并从customListItem调用。
ListView{
id:model
listItemComponents: [
ListItemComponent {
id: listComponent
type:"item"
customListItem{
id:listItem
onPlayerStarted:{
listItem.ListItem.view.playingActiveFrame();
}
onPlayerStopped:{
listItem.ListItem.view.resetActiveFrame();
}
}
}
]
function playingActiveFrame(){
activeFrame.isPlaying(true);
}
function resetActiveFrame(){
activeFrame.isPlaying(false);
}
}
答案 1 :(得分:0)
没有经过测试,但这样的事情应该有效。
ListView{
id:model
listItemComponents: [
ListItemComponent {
id: listComponent
type:"item"
customListItem{
id:listItem
onPlayerStarted:{
listItem.ListItem.view.activeFrame.isPlaying(true)
}
onPlayerStopped:{
listItem.ListItem.view.activeFrame.isPlaying(false)
}
}
}
]
}
由于:
由于某些奇怪的原因,listItemComponents超出正常范围 代码流。但你可以解决它。给你的listItemComponent一个 名称/ ID。然后您可以通过父ListView引用。 Source