1

附件是我的控制器文件..我基本上想切换视图..在带有 2 个按钮的容器中添加和删除面板..在主页和流行按钮的方法中,我一次又一次地使用 Ext.create 不会超载我的应用程序因为 iam 没有破坏我的视图 iam 添加和删除它们.. 我的主要问题是我如何为这种情况创建全局 var ,就像我创建 var homepanel = Ext.create 一样,然后我可以在我想要的时候重用该 var从我的 mainContainer 中删除或添加它.. 需要对此进行认真的指导.. 搜索了整个文档,但我对此一无所知

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);
}
});

注意:我使用 Ext.define 创建我的视图并使用 MVC 结构。

4

2 回答 2

2

用这个,

var homepanel = this.getHomePanel() || Ext.create('app.view.Home.HomePanel');

如果 this.getHomePanel() 没有返回任何内容,它将为您创建面板。之后,您将使用已经创建的面板。

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

像这样在视图中设置按钮

{
xtype : 'button',
text : 'Home Panel',
action : 'goHome'
}

然后在控制器的控制部分使用它

'button[action=goHome] : 
 {
  tap: 'homeBtnAction'
 }
于 2012-08-08T21:11:27.300 回答
0

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

于 2012-05-20T19:16:11.523 回答