1

添付されているのは私のコントローラーファイルです..基本的にビューを切り替えたいです..2つのボタンがあるコンテナーでパネルを追加および削除します..ホームおよび人気のあるボタンの方法でExt.createを何度も使用していますアプリケーションbecoziamがビューを破棄しないiam追加および削除..私の主な質問は、var homepanel = Ext.createを1回だけ作成し、必要なときにその変数を再利用できるように、この状況でグローバル変数を作成するにはどうすればよいかです。 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);
}
});

注: IamはExt.defineを使用してビューを作成し、MVC構造を使用しています。

4

2 に答える 2

2

これを使って、

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

this.getHomePanel()が何も返さない場合は、パネルが作成されます。その後、作成済みのパネルを使用します。

また、何らかの方法でボタンを操作している場合を除き、ボタンにIDまたは参照を指定する必要はありません。

このようにビューにボタンを設定します

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

次に、コントローラーの制御セクションでこれを使用します

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

1つのオプションは次のとおりです。「起動」では、両方のビューを作成し(Ext.Createを使用)アクションボタンのコールバックでExt.getCmpを使用して、以前に作成されたビューを取得します。

于 2012-05-20T19:16:11.523 に答える