2

アプリケーションで 4 つのタブを含むタブ パネルを表示しています。デフォルトでは最初のタブが表示されます。

ユーザーが他の 3 つのタブのいずれかを選択するたびに、ローカル ストレージのユーザー トークン変数をチェックして、ユーザーが既にログインしているかどうかを確認する必要があります。

ローカル ストレージのユーザー トークン変数から有効な値を取得できない場合、またはユーザーがまだログインしていない場合は、タブ パネルにオーバーレイ ページを表示して、ユーザーにログインを求める必要があります。

ユーザーが別のタブを選択し、まだログインしていない場合にオーバーレイ ログイン パネルが表示されるように、オーバーレイ パネル (オーバーレイの例) を設計しました。

私の問題は、ユーザーが別のタブを選択すると、選択したタブ画面が有効になり、その画面がオーバーレイログイン画面の下に表示されることです。ユーザーがログインしていないときに他のタブ画面が表示されず、最初のタブ画面のみが表示されるように、タブ ナビゲーションを無効にするにはどうすればよいですか?

4

1 に答える 1

2

問題を解決するためのコード スニペットの例を次に示します。

あなたはあなたのからそのようなことを処理することができますController:

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

    config : {
        refs : {
            tabHome     : "#mainView tab[iconCls=home]",
            tabProduct  : "#mainView tab[iconCls=products]",

        },
        control : {
            tabHome : {
                tap : 'showHome'
            },

            tabProduct : {
                tap : 'showProduct'
            },

        }
    },

    showHome : function () {
        if(getLoginState() == true){
            Ext.Viewport.getActiveItem().getAt(1).setActiveItem('homeView');
        }
        else{
            Ext.Viewport.getActiveItem().getAt(0).setActiveItem('dashboardView');
            showLoginOverlay();
        }
    },

    showProduct : function () {
        if(getLoginState() == true){
            Ext.Viewport.getActiveItem().getAt(2).setActiveItem('productView');
        }
        else{
            Ext.Viewport.getActiveItem().getAt(0).setActiveItem('dashboardView');
            showLoginOverlay();
        }
    },

});

ありがとう。

于 2013-01-01T07:53:28.870 に答える