Sencha touch 2 sencha touch 2优化

Sencha touch 2 sencha touch 2优化,sencha-touch-2,Sencha Touch 2,附件是我的控制器文件。。我基本上想交换看法。。在带有2个按钮的容器中添加和删除面板。。在home and popular按钮的方法中,我一次又一次地使用Ext.create不会使我的应用程序过载,因为我没有破坏我的视图,而是在添加和删除它们。。我的主要问题是如何为这种情况创建全局var,比如我只创建var homepanel=Ext.create一次,然后当我想从主容器中删除或添加该var时,我可以重用该var。。在这方面需要认真的指导。。我查了整个文件,但我一点线索也没有 Ext.define

附件是我的控制器文件。。我基本上想交换看法。。在带有2个按钮的容器中添加和删除面板。。在home and popular按钮的方法中,我一次又一次地使用Ext.create不会使我的应用程序过载,因为我没有破坏我的视图,而是在添加和删除它们。。我的主要问题是如何为这种情况创建全局var,比如我只创建var homepanel=Ext.create一次,然后当我想从主容器中删除或添加该var时,我可以重用该var。。在这方面需要认真的指导。。我查了整个文件,但我一点线索也没有

Ext.define('app.controller.MainController', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        homeBtn: '#homeBtn',
        popularBtn: '#popularBtn',

        homePanel: '#homePanel',
        mainContainer: '#mainContainer'
    },
    control: {
        homeBtn:{
            tap: 'homeBtnAction'
        },
        popularBtn:{
            tap: 'popularBtnAction'
        }
    }
},


launch: function(app) {
    this.callParent(arguments);

    console.log("main launched");

    var mainCont = this.getMainContainer();
    var homepanel = Ext.create('app.view.Home.HomePanel');

    mainCont.add(homepanel);

    console.log("homePanelAdded");
},

homeBtnAction: function(){
    console.log("home page called");

    var mainCont = this.getMainContainer();
    var homepanel = Ext.create('app.view.Home.HomePanel');
    var popularpanel = Ext.create('app.view.Popular.PopularPanel');

    mainCont.remove(popularpanel);
    mainCont.add(homepanel);
},

popularBtnAction: function(){
    console.log("popular page called");

    var mainCont = this.getMainContainer();
    var homepanel = Ext.create('app.view.Home.HomePanel');
    var popularpanel = Ext.create('app.view.Popular.PopularPanel');

    mainCont.remove(homepanel);
    mainCont.add(popularpanel);
}
});
注意:Iam使用Ext.define创建我的视图并使用MVC结构。

一个选项是:在“启动”中,创建两个视图(使用Ext.create)并使用操作按钮回调来检索以前创建的视图。

使用此选项

var homepanel = this.getHomePanel() || Ext.create('app.view.Home.HomePanel');
如果此.getHomePanel()未返回任何内容,它将为您创建面板。之后,您将使用已创建的面板

另请注意,除非您以某种方式操作按钮,否则无需为它们提供id或ref

像这样在视图中设置按钮

{
xtype : 'button',
text : 'Home Panel',
action : 'goHome'
}
然后在控制器的控制部分使用以下命令

'button[action=goHome] : 
 {
  tap: 'homeBtnAction'
 }

我正在使用一个id,因为我的按钮有图像,需要在点击时更改。我也可以这样做:mainCont.removeAll(true,true);这将删除my mainCont中的任何现有面板,并将其销毁。我还是会接受你的回答。谢谢你的补充信息。我不知道这个var homepanel=this.getHomePanel()| | Ext.create('app.view.Home.homepanel');