2013-04-10 3 views
0

У меня здесь небольшая проблема с Sencha Touch 2:Как отличить кнопку возврата цели в ST2?

Мое приложение имеет 2 просмотра/списки: новости и события. Оба имеют подробные представления. В списке новостей Ям, показывающий кнопку фильтра и сортировки и в списке событий, я хочу показать только кнопку фильтра.

Когда я нажимаю на элемент, навигационный контроллер автоматически добавляет кнопку возврата.

Что делать атм: - когда пользователь щелкает элемент в списке: скрыть все кнопки - когда пользователь нажимает на кнопку назад: показать все кнопки

И вот проблема ... Я не может видеть, была ли она кнопкой «Назад» в окне сведений о подробностях или подробном представлении событий.

В моем контроллере у меня есть:

"mainnav[id=mainNav]": { 
      back: 'showButtons', 
     }, 

когда я пытаюсь:

"panel[id=newsDetail]": { 
      back: 'showButtons', 
     }, 

события получает не срабатывает. Итак, как я могу знать, это была кнопка новостей или событий?

Спасибо!

Редактировать: его нелегко объяснить ... вот еще информация: «mainNav» - это вид навигации, а кнопка «Назад» добавляется на панель инструментов.

Ext.define('MyApp.view.MainNav', { 
extend: 'Ext.navigation.View', 
alias: 'widget.mainnav', 
config: { 
    id: 'mainNav', 
    maxWidth: '350px', 
    items: [ 
    { 
     xtype: 'tabpanel', 
     layout : { 
      type : 'card' 
     }, 
... 
items: [ 
     { 
     xtype: 'list', 
     title: 'News', 
     id: 'newsList', 
     store: 'newsStore', 
     grouped: true, 
     onItemDisclosure: true, 
... 
    { 
    xtype: 'list', 
    title: 'Events', 
    iconCls: 'team', 
    id: 'eventList', 
    store: 'eventStore', 
    onItemDisclosure: true, 
... 
    tabBar: { 
    docked: 'bottom' 
} 
... 
and the navigation bar with its buttons: 

navigationBar: { 
minWidth: '', 
width: '', 
id: 'navBar', 
layout: { 
    align: 'center', 
    type: 'hbox' 
}, 
items: [ 
{ 
    xtype: 'button', 
    id: 'settingsButton', 
    align: 'left', 
    iconCls: 'settings6', 
    iconMask: true 
}, 
    { 
    xtype: 'button', 
    id: 'filterbutton', 
    align: 'right', 
    iconCls: 'list', 
    iconMask: true 
} 
] 
}, 

Что IAM пытается сделать сейчас:

"mainnav[id=mainNav]": { 
     back: 'showButtons', 
    }, 

получить срабатывает, когда пользователь нажимает кнопку (не имеет значения, если он идентификатор в newsDetail или eventsDetail), но я хочу знать, какой вид пользователь видит после нажатия кнопки «Назад».

Если он видит список новостей, я хочу показать обе кнопки (фильтр и ситения), но он видит список событий, я хочу показать только одну кнопку. мне нужно что-то вроде:

showButtons: function(component, options) { 
    if(Ext.getCmp(backButton).down().getId() == 'newsList'){ 
    //show 2 buttons 
    }else{ 
    //show one button 
    } 
} 

Извините, если ответ сбивает с толку ... Я не знаю, как я мог бы объяснить это лучше. В любом случае, я был бы признателен за любую помощь/идею!

+0

очень растерялся .. – dbrin

+0

извините за это ... Я отредактировал свой предыдущий пост, надеюсь, его лучше сейчас ... – Nico

ответ

0

Есть решение:

var activePanel = Ext.getCmp('MainTabPanel').getActiveItem(); 
    var activeItem = activePanel.getItemId(); 

    if(activeItem == 'newsList'){ 
     this.filterNewsStore(); 
     Ext.getCmp('showSettingsButton').show(); 
     Ext.getCmp('filterButton').show(); 
    } 

    if(activeItem == 'eventList'){ 
     this.filterEventsStore(); 
     Ext.getCmp('showSettingsButton').hide(); 
     Ext.getCmp('filterButton').show(); 
    } 

Я называю этот код, когда кнопка назад увольняют.

0

Панель не имеет заднего события. Так что его никогда не уволят.

mainnav - это обычная xtype, которую вы определили правильно? Иначе этот селектор ошибочен.

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