私は 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')
そのため、連絡先ビューのボタンがクリックされた場合でも、連絡先ではなく、常にホームのナビゲーション ビューを参照しているようです。
この問題を解決するにはどうすればよいですか?
助けてくれてありがとう。