我在这里与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
}
}
很抱歉,如果答案令人困惑......我不知道如何更好地解释它。 无论如何,我会感激任何帮助/想法!
答案 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();
}
当后退按钮被触发时,我调用此代码。