如何在ListView的ListItemComponent中访问qml ContextProperty变量

时间:2013-12-05 11:47:27

标签: blackberry blackberry-10 blackberry-cascades

我在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)
                              }

                           }

                 }

         ]

}

感谢

2 个答案:

答案 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