2012-04-25 129 views
6

我有一個sencha touch應用程序,它使用tabpanel,這個應用程序的一個測試版加載tabpanel的所有項目並顯示它。 有太多的項目,切換標籤變得更慢 優化我的想法是加載項目時,只有當顯示加載掩碼後激活某個面板。items in sencha touch 2

我能夠使它在第一次點擊時工作,但是當我切換到同一個選項卡時,它沒有被填充或至少項目沒有被顯示。 不會引發任何異常。

Ext.application({ 
    name : 'Sencha', 
    launch : function() { 
      var root = contents; 
      var children = root._listOfContentChild; 
      var mainPanel = Ext.create('components.NavigationPanel', 
       { 
       iconCls : 'more', 
       listeners: { 

        activate: function() { 
          mainPanel .setMasked({ 
           xtype: 'loadmask', 
           message: 'Loading...' 
          }); 

          setTimeout(function() {   
           loadItems(root,children); // returns my items 
           mainPanel .setItems(items); 
           mainPanel .setMasked(false); 
          }, 300); 

    } } }); 

    var settingsPanel = Ext.create('components.NavigationPanel', { 
     title : 'Settings', 
     iconCls : 'settings', 
    }); 


    view=Ext.Viewport.add({ 
     xtype : 'tabpanel', 
     deferredRender:true, 

     tabBarPosition : 'bottom', 
     activeItem:settingsPanel, 
     items : [mainPanel,settingsPanel ] 
    }); 
    } 
    }); 

概述: 我的應用程序正常工作,如果所有的項目都壓在標籤 我的問題是,當我有一個項目的數量龐大,我按他們的相應選項卡上之前在開始填寫。它會持續1,2秒。 使用此應用程序的人會認爲他沒有在標籤上正確按壓,它看起來會很慢。 我的做法是在標籤上加載一個蒙版按1秒,這將使我的標籤在按下時自動響應,然後添加我的物品。這個想法只適用於第一次點擊,當我切換到另一個選項卡,並回到原來沒有顯示(除了加載掩碼) 我試過mainPanel.add而不是mainPanel.setItems。我面臨另一個問題,現在在面板上點擊下一個按鈕,我的項目顯示,但沒有加載掩碼,就好像我在按下之前在開始加載項目。

+0

你好嗎控制檯什麼錯誤?您是否嘗試過Google Chrome的Inspect元素? – 2012-04-25 11:16:35

+0

@roadRunner謝謝。 沒有錯誤顯示,我只是無法設置項目第二次按下標籤(沒有例外拋出)我檢查了我的檢查項目在鉻的檢查元素它是空的。 – john 2012-04-26 08:25:47

+0

內容值在哪裏設定?我無法在應用程序中看到它的值。 – 2012-04-27 11:13:24

回答

3

我想出瞭解決方案。檢查下面的代碼。

希望能幫到你!

代碼:

Ext.Loader.setConfig({ 
    enabled: true 
}); 

Ext.application({ 
    name: 'Sencha', 

    launch: function() { 
     //var root = contents; 
     //var children = root._listOfContentChild; 
     var mainPanel = Ext.create('Ext.Panel', { 
          iconCls : 'more', 
          id:'mpanel', 
          styleHtmlContent:true, 
          listeners: { 
           painted: function() { 
           mainPanel.removeAll(); 
           mainPanel.add({ 
             masked:{ 
             xtype:'loadmask', 
             id:'lmask', 
             } 
           }); 
           setTimeout(function() {  
             Ext.getCmp('lmask').hide(); 
             Ext.getCmp('mpanel').add({ xtype:'textfield',label:'Name',required:true }); 
            }, 300); 

           } 
          } 
          }); 

     var settingsPanel = Ext.create('Ext.Panel', { 
      title : 'Settings', 
      iconCls : 'settings', 
     }); 


     view=Ext.Viewport.add({ 
      xtype : 'tabpanel', 
      deferredRender:true, 

      tabBarPosition : 'bottom', 
      activeItem:settingsPanel, 
      items : [mainPanel,settingsPanel ] 
     }); 
    } 
}); 

輸出示例:

Loading Mask

enter image description here

+0

讚賞,您的回答很有幫助,雖然它在我的一組物品上無法正常工作。 當我使用Ext.getCmp('mpanel')。add(myItems); 只有一項myItems被加載,這在我的情況下是工具欄。 謝謝。 – john 2012-04-29 19:35:40

+0

好吧,順便說一句,你想添加的所有項目?如果可能的話,我可以幫你把這些物品放在標籤上。 – 2012-04-29 20:17:47

+0

謝謝。我會盡快回復。 – john 2012-04-29 20:32:08