如何区分ST2中的目标后退按钮?

时间:2013-04-10 18:48:42

标签: extjs sencha-touch sencha-touch-2 sencha-touch-2.1

我在这里与Sencha Touch 2有一点问题:

我的应用程序有2个视图/列表:新闻和事件。两者都有详细的视图。 在新闻列表中Iam显示了一个过滤器和排序按钮,在事件列表中我想只显示过滤器按钮。

当我点击某个项目时,导航控制器会自动添加一个后退按钮。

我做的是: - 当用户单击列表中的项目时:隐藏所有按钮 - 当用户点击后退按钮时:显示所有按钮

那就是问题......我无法看到它是新闻详情视图或事件详情视图中的后退按钮。

在我的控制器中我有:

"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
}
]
},

我现在想做什么:

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

当用户点击后退按钮时触发(如果他在newsDetail或eventsDetail中id,则无关紧要)但我想知道用户在点击后退按钮后看到的是哪个视图。

如果他看到新闻列表,那么我想显示两个按钮(过滤器和seetings)但是他看到事件列表我只想显示一个按钮。 我需要这样的东西:

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

很抱歉,如果答案令人困惑......我不知道如何更好地解释它。 无论如何,我会感激任何帮助/想法!

2 个答案:

答案 0 :(得分:0)

面板没有后退事件。所以它永远不会被解雇。

mainnav是你定义的自定义xtype吗?否则选择器也是错误的。

答案 1 :(得分: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();
    }

当后退按钮被触发时,我调用此代码。