1

我正在开发一个煎茶触摸移动应用程序,但我遇到了问题。我将尝试包含尽可能多的细节。

我有一个包含 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')即使单击联系人视图中的按钮,它也总是引用主页的导航视图而不是联系人。

我该如何解决这个问题?

非常感谢您的帮助。

4

0 回答 0