我有一个包含5个项目的列表视图,我希望每个项目在点击时导航到不同的页面。我想要发生的只是导航到一个不同的页面,不传递任何数据(正如许多教程所说),所以如何实现这一点。例子也非常受欢迎。
由于
QML
import bb.cascades 1.2
NavigationPane {
Page {
titleBar: TitleBar {
title: "Hello World"
}
Container {
//Todo: fill me with QML
ListView {
dataModel: XmlDataModel {source: "list.xml"}
listItemComponents: [
ListItemComponent {
type: "item"
StandardListItem {
title: ListItemData.title
description: ListItemData.text
}
}
]
}
}
}
}
XML
<root>
<item title="Item 1" file="item1.qml"/>
<item title="Item 2" file="item2.qml"/>
<item title="Item 3" file="item3.qml"/>
<item title="Item 4" file="item4.qml"/>
<item title="Item 5" file="item5.qml"/>
</root>
答案 0 :(得分:0)
首先,您需要捕获该点击,因此请使用
onTriggered: {
//use this to get data from your click
var myData = dataModel.data(indexPath);
}
现在myData
会存储title
和file
。但你不能(至少不是我所知道的)打开QML而不先定义它。所以使用这个:
attachedObjects: [
ComponentDefinition {
id: mitem1
source: item1.qml
},
ComponentDefinition {
id: mitem2
source: item2.qml
} //etc
]
然后调用类似这样的东西(你可以从myData.file
获取文件名,以便从onTriggered中使用它来调用正确的ID)
navigationPane.push(mitem1.createObject());
哦,您需要为NavigationPane(id:navigationPane
)