如何从listview bb10 qml中的listitemcomponents访问外部组件?

如何从listview bb10 qml中的listitemcomponents访问外部组件?,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,我无法从ListItemComponent内部访问数据源id。在这方面有人能帮我吗 ListItemComponent{ 类型:“项目” 容器{ id:listviewcontainer 容器{ 首选宽度:768 布局:StackLayout{ 方向:LayoutOrientation.LeftToRight } 自定义图像视图{ 左侧填充:10 右侧填充:10 url:ListItemData.from_image 水平对齐:水平对齐。左 垂直对齐:垂直对齐。中心 } 容器{ 首选宽度:538

我无法从ListItemComponent内部访问数据源id。在这方面有人能帮我吗

ListItemComponent{
类型:“项目”
容器{
id:listviewcontainer
容器{
首选宽度:768
布局:StackLayout{
方向:LayoutOrientation.LeftToRight
}
自定义图像视图{
左侧填充:10
右侧填充:10
url:ListItemData.from_image
水平对齐:水平对齐。左
垂直对齐:垂直对齐。中心
}
容器{
首选宽度:538
布局:StackLayout{
方向:LayoutOrientation.TopToBottom
}
容器{
布局:StackLayout{
方向:LayoutOrientation.LeftToRight
}
标签{
text:ListItemData.from
文本样式{
基础:SystemDefaults.TextStyles.TitleText
颜色:color.create(#2db6ff)
}
}
图像视图{
图像源:“asset:///Home/img.png"
垂直对齐:垂直对齐。中心
}
}//容器
标签{
文本:ListItemData.message
多行:正确
文本样式{
基本:SystemDefaults.TextStyles.SubtitleText
}
内容{
flags:TextContentFlag.表情符号
}
}
标签{
id:时间
text:ListItemData.time
文本样式{
基础:SystemDefaults.TextStyles.SmallText
颜色:颜色。创建(“666666”)
}
}
}//容器
图像按钮{
id:删除\u btn
defaultImageSource:“asset:///Icon/delete.png"
按图像源:asset:///Icon/delete.png"
垂直对齐:垂直对齐。中心
水平对齐:水平对齐。对
再次点击:{
deleteMessage(ListItemData.tid、ListItemData.uid);
}
函数deleteMessage(tid,uid){
var请求=新的XMLHttpRequest()
request.onreadystatechange=函数(){
if(request.readyState==4){
var mResponse=request.responseText
mResponse=JSON.parse(mResponse)
var mResponseStatus=mResponse.response[0]。receive.status;
var mMsg=mResponse.response[0]。receive.message;
如果(mResponseStatus==1){
msg_DataSource.source=“newurl.com”//此行在此处不起作用。。
msg_DataSource.load();//此行在此处不起作用。。
}else if(mResponseStatus==0){
}
}
}//端函数
打开(“GET”,“myurl.com”,true);
request.send();
}//删除消息
}//图像按钮
}//容器
}//容器
}//ListItemComponent
在这里我无法算出以下两行

msg_DataSource.source=“newurl.com”
msg_DataSource.load();
我试过下面这样,但这也不起作用

listviewcontainer.ListItem.view.dataModel.message\u DataSource.source=“myurl.com”;
listviewcontainer.ListItem.view.dataModel.message_DataSource.load();
还是这个

listviewcontainer.ListItem.view.dataModel.source=“myurl.com”;
listviewcontainer.ListItem.view.dataModel.load();

使数据模型可访问的最简单方法是在定义数据模型的任何位置(例如在
ListView
QML文件中)向数据模型声明。这将使QML中的顶级组件可以从此
属性别名
访问您的数据模型。实际上,它为您提供了从QML中任何其他位置对数据模型的全局引用

例如,如果您的数据模型被称为
msg_DataSource
,那么在定义它的QML文件中,您可以创建如下属性别名:

属性别名myDataModel:msg\u数据源
然后在
ListItemComponent deleteMessage
函数中,您可以像这样使用
myDataModel

myDataModel.source=“newurl.com”
load();

注意:我相信您也可以使用信号和插槽以更优雅的方式完成此操作,但这种方式应该更快、更容易理解。

使用以下代码将对象存储到全局变量的另一种最简单的方式,该代码对我适用

         onCreationCompleted: {
         Qt.tabbedPane = tabbedPane;
         Qt.homeTab = homeTab;
        }   
在这里,我在页面创建完成时将tabbedPane存储在全局变量Qt.tabbedPane中。现在我可以使用Qt.tabbedPane从ListItemComponent访问它

希望能有帮助