2011-07-15 4 views
1

編集setActiveItemのTabPanelカードが消えていますか?

私はTabPanelを拡張するビューポートを持っています。その中で、tabBarボタンの1つを設定して、subTabPanelという別のTabPanelをロードします。 myApp.views.viewport.setActiveItem(index, options)は問題なく動作します。しかし、myApp.views.subTabPanel.setActiveItem(index, options)は、それが消滅する前に1秒間だけ適切なパネルカードをロードします。

は不思議、それはsubTabPanelのリスト項目の中から、この呼び出しを行うだけで正常に動作: this.ownerCt.setActiveItem(index, options) しかし、私はMVCに密着するような行動は、コントローラ内部で生きたいと、これを回避したいです。

コントローラーから呼び出されたときにカードが消えてしまう理由については考えていますが、含まれているsubTabPanelから呼び出されたときは消えませんか?

(問題のsubTabPanelカードがExt.Carouselの拡張機能です。)



UPDATE

ことができるようsubTabPanelとそのカルーセルの両方が、二回何とかインスタンス化されているように見えます問題の大きな部分である...

答えて

1

このケースでの答えは、subTabPanelとそのカルーセルの重複した作成を防ぐことでした。

ビューポートが次のようになります。

myApp.views.Viewport = Ext.extend(Ext.TabPanel, { 
    fullscreen: true, 
    layout: 'card', 
    cardSwitchAnimation: 'slide', 
    listeners: { 
     beforecardswitch: function(cnt, newCard, oldCard, index, animated) { 
      //alert('switching cards...'); 
     } 
    }, 
    tabBar: { 
     ui: 'blue', 
     dock: 'bottom', 
     layout: { pack: 'center' } 
    }, 
    items: [], 
    initComponent: function() { 
     //put instances of cards into myApp.views namespace 
     Ext.apply(myApp.views, { 
      subTabPanel: new myApp.views.SubTabPanel(), 
      tab2: new myApp.views.Tab2(), 
      tab3: new myApp.views.Tab3(), 
     }); 
     //put instances of cards into viewport 
     Ext.apply(this, { 
      items: [ 
       myApp.views.productList, 
       myApp.views.tab2, 
       myApp.views.tab3 
      ] 
     }); 
     myApp.views.Viewport.superclass.initComponent.apply(this, arguments); 
    } 
}); 

そして、私は以来、items:プロパティからこれらのタブパネル項目の重複作成を削除し、ビュークラスSubTabPanel、TAB2に彼らのタブバー固有のプロパティを移動したとTab3(それぞれExt.TabPanelまたはExt.Panelのいずれかの拡張です)。

関連する問題