我正在开发一个煎茶触摸移动应用程序,但我遇到了问题。我将尝试包含尽可能多的细节。
我有一个包含 2 个项目的 TabPanel:主页视图和联系人视图。
Ext.define('myapp.view.Main', {
extend: 'Ext.TabPanel',
requires: [
'myapp.view.Home',
'myapp.view.Contacts'
],
config: {
fullscreen : true,
tabBar: {
docked: 'bottom',
defaults: {
flex: 1
},
layout: {
pack: 'center'
}
},
layout: {
type: 'card',
animation: {
type: 'slide'
}
},
items: [
{ xtype: 'homeView' },
{ xtype: 'contactsView' }
]
}
});
我希望每个项目都有相同的导航视图。导航视图有一个按钮可以推动另一个视图。
为此,我创建了一个 BaseNavigationView.js
Ext.define('myapp.view.BaseNavigationView', {
extend : 'Ext.navigation.View',
xtype : 'baseNavigationView',
config : {
navigationBar : {
items : [ {
xtype : 'button',
text : 'My Info',
align : 'right',
id : 'myInfoButton',
ui : 'small'
}
]
},
}
});
在 2 个视图(家庭和联系人)中,我使用
extend: 'myApp.view.BaseNavigationView'
为了拥有两者的导航视图。
到目前为止,一切正常。
现在对于控制器,我想在MyInfo
按钮上添加一个点击事件,并myInfoView
在相应视图中点击时按下。
在控制器中,我添加到控制部分:
'#myInfoButton' : {
tap : 'onMyInfoButton'
}
和处理程序:
onMyInfoButton: function(self, e, eOpts) {
//Create a new instance of the
if (!this.myInfoView) {
this.myInfoView= Ext.create('myApp.view.myInfoView');
}
//Get the parent navigation view and push the view
self.up('baseNavigationView').push(this.myInfoView);
}
当我运行应用程序时,主页和联系人视图都正确显示带有“myInfoButton”的导航视图。
问题
当我从“主页”视图单击 myInfoButton 时,“myInfoView”会使用后退按钮正确推送。
但是,如果我切换到“联系人”选项卡并单击 myInfoButton ,则“myInfoView”被推送到“主页”选项卡而不是“联系人”选项卡中。所以在联系人选项卡中没有任何反应,我必须返回主页选项卡才能查看推送的视图。
因此,self.up('baseNavigationView')
即使单击联系人视图中的按钮,它也总是引用主页的导航视图而不是联系人。
我该如何解决这个问题?
非常感谢您的帮助。