2013-02-20 1 views
1

Мне нужно нажать страницу, когда была нажата кнопка просмотра списка. Я пробовал кодировку ниже, но она не работает.Как перейти на другую страницу из списка событий click click в bb 10 каскадах?

ListItemComponent { 
    type: "imageItem" 
    Container { 
     id: publicimageItem 
     ...... 

     ...... 

     ImageButton { 
      defaultImageSource: "asset:///defaultimg.png" 
      pressedImageSource: "asset:///pressedimg.png" 

      onClicked: { 
       var new_page = publicimageItem.ListItem.view.nextpage.createObject(); 
       publicimageItem.ListItem.view.navigationPane.push(new_page); 
      } 
      attachedObjects: [ 
       ComponentDefinition { 
        id: nextpage 
        source: "NextPage.qml" 
       } 
      ] 
     }// ImageButton 
    }// Container 
}// ListView 

Когда я попытался за пределами списка, он будет отправлен на следующую страницу без каких-либо проблем.

+0

Для начала добавьте код отсюда (http://developer.blackberry.com/cascades/download/releasenotes/#limitations) к вашему main.cpp, чтобы получить выход в консоли. Это полезно, когда вы хотите добавить операторы отладки и для отображения ошибок. – barry

+0

Он также помогает тестировать/отлаживать, чтобы обернуть блоки кода javascript в try..catch и вывести ошибку на консоль (если вы внесли предложение Барри выше). Часто ошибка, такая как «объект не найден», не выводит ошибку и просто бесшумно терпит неудачу. – hyarion

+0

Вы нашли решение? –

ответ

0

предполагающих, что путь к NextPage.qml и сама страница является действительным, и настроить должным образом, я хотел бы предложить, чтобы изменить код onClicked() на следующее:

var new_page = nextpage.createObject(); 
navigationPane.push(new_page); 

Пожалуйста, убедитесь, что navigationPane доступна здесь , Возможно, было бы неплохо включить ведение журнала консоли (или использовать утилиту терминала slog2info) как упоминалось ранее как barry. Таким образом, вы сможете увидеть, что происходит с вашим кодом и почему.

В качестве другого варианта, если вы хотите перейти на другую страницу, взаимодействуя со всем ListItem (а не с конкретным виджетом в нем), вам необходимо поместить один и тот же код в onTriggered() слоте:

ListView { 
    ListItemComponent { 
     type: "imageItem" 
     Container { 
      id: publicimageItem 
      ...... 
     }// Container 
    }// ListItemComponent 

    onTriggered: { 
     var new_page = nextpage.createObject(); 
     navigationPane.push(new_page); 
    } 

    attachedObjects: [ 
     ComponentDefinition { 
      id: nextpage 
      source: "NextPage.qml" 
     } 
    ]  
} // ListView  
+0

Привет, есть ли какой-либо метод, который можно сделать одним нажатием кнопки, если я использую onTrigger весь список, щелчок, вместо этого нужно щелкнуть по одной кнопке click event-Thanks – Vendetta

+0

Что вы подразумеваете под «целым списком»? В соответствии с [документацией] (http://developer.blackberry.com/cascades/reference/bb__cascades__listview.html#function-triggered-indexpath) этот сигнал выдается, когда элемент списка запускается пользователем. Если вы хотите обработать определенный сигнал виджета в элементе списка, вам необходимо привязать соответствующий сигнал этого виджета, то есть 'onClicked()' в случае 'Button' и т. Д. – Sunseeker

+0

У меня есть эта проблема: ReferenceError: Can ' t find variable: navigationPane –

1

Еще один простой способ сохранить объект в глобальной переменной, используя следующий код, который отлично работает со мной.

 onCreationCompleted: { 
    Qt.tabbedPane = tabbedPane; 
    Qt.homeTab = homeTab; 
    } 

Здесь я хранится tabbedPane в глобальной переменной Qt.tabbedPane на создание страницы Completed.Now я смог получить к нему доступ с помощью ListItemComponent Qt.tabbedPane.

В вашем случае сохраните навигационную панель в Qt.navigationPane = NavigationId, затем попробуйте получить к ней доступ из ListItemComponent в качестве Qt.navigationPane.

Надеюсь, это поможет.

Надеюсь, это поможет.