2012-04-25 15 views
6

मेरे पास एक सेन्चा टच एप्लिकेशन है जो एक टैबपनेल का उपयोग करता है, इस एप्लिकेशन का बीटा संस्करण टैबपेनल के सभी आइटम लोड करता है और इसे प्रदर्शित करता है। इतने सारे आइटमों के साथ, टैब के बीच स्विचिंग धीमा हो गया अनुकूलन के लिए मेरा विचार केवल तभी लोड करना है जब लोडिंग मास्क दिखाने के बाद कोई निश्चित पैनल सक्रिय हो।सेन्चा टच 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 की कोशिश की। मुझे एक और समस्या का सामना करना पड़ा, अब पैनल पर अगले टैप में, मेरे आइटम दिखाए जाते हैं लेकिन लोडिंग मास्क के बिना जैसे कि मैं दबाने से पहले शुरुआत में आइटम लोड कर रहा हूं।

+0

क्या त्रुटि आप कंसोल पर मिल रहा है? क्या आपने Google क्रोम के इंस्पेक्ट तत्व का प्रयास किया था? –

+0

@roadRunner आपको धन्यवाद। कोई त्रुटि दिखाई नहीं दे रही है, मैं टैब पर दूसरी बार आइटम को सेट करने में असमर्थ हूं (कोई अपवाद नहीं फेंक दिया गया है) मैंने क्रोम के निरीक्षण तत्व में आइटमों की अपनी सरणी की जांच की है। – john

+0

सामग्री मूल्य सेट कहां है? मैं आवेदन के अंदर अपना मूल्य निर्धारित नहीं कर सकता। –

उत्तर

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') का उपयोग करता हूं। जोड़ें (myItems); myItems का केवल एक आइटम लोड हो जाता है जो मेरे मामले में टूलबार है। धन्यवाद। – john

+0

ठीक है, बीटीडब्ल्यू, आप सभी आइटम जोड़ने की कोशिश कर रहे थे? यदि संभव हो, तो मैं उन वस्तुओं को टैब पर प्राप्त करने में आपकी सहायता कर सकता हूं। –

+0

धन्यवाद। मैं जितनी जल्दी हो सके जवाब दूंगा। – john