1

私は sencha touch モバイル アプリに取り組んでいますが、問題が発生しています。できるだけ多くの詳細を含めるようにします。

ホーム ビューと連絡先ビューの 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し、対応するビューでタップされたときにを押したいと思います。

Control セクションに追加したコントローラーでは、次のようになります。

'#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