2014-02-02 2 views
0

У меня есть список, содержащий 5 элементов, и я хочу, чтобы каждый элемент перемещался на другую страницу при нажатии. Все, что я хочу сделать, - это перейти на другую страницу, не передающую какие-либо данные (как многие советы продолжают говорить), так как это будет достигнуто. Примеры также были бы чрезвычайно оценены.Вид списка не работает - не переходить на разные страницы

Благодаря

QML

импорт 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

Сначала вам нужно, чтобы поймать этот щелчок, так что используйте

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

navigationPane.push(mitem1.createObject()); 

ой, и вам необходимо установить (id:navigationPane)

+0

Также, если вы используете createObject(), вы создадите небольшие утечки, вы должны уничтожить QML при его закрытии. Думал, что вы должны знать –

Смежные вопросы