未在sencha touch中加载的商品2

joh*_*ohn 5 javascript html5 extjs sencha-touch-2

我有一个使用tabpanel的sencha touch应用程序,此应用程序的beta版本加载tabpanel的所有项目并显示它.如此多的项目,在标签之间切换变得更慢以进行优化我的想法是仅在显示加载掩码后激活某个面板时才加载项目.

我能够让它在第一次点击时工作,但当我再次切换到相同的标签时,它没有被填充或至少没有显示项目.没有异常被抛出.

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 ]
    }); 
    }
    });
Run Code Online (Sandbox Code Playgroud)

概述: 我的应用程序工作正常,如果所有项目都在开头填写之前按下标签我的问题是当我有大量的项目,我按下他们相应的选项卡.它挂了1,2秒.使用此应用程序的人会认为他没有正确地按下选项卡,它看起来会很慢.我的方法是在标签上加载一个面具,持续1秒,这将使我的标签在按下时自动响应,然后我添加我的项目.这个想法只适用于第一次点击,当我切换到另一个选项卡,然后回到原来没有显示任何东西(加载掩码除外)我尝试mainPanel.add而不是mainPanel.setItems.我面临另一个问题,现在在面板上的下一个点击,我的项目显示但没有加载面具,好像我在按下之前在开始时加载项目.

sgo*_*les 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 ]
        }); 
    }
});
Run Code Online (Sandbox Code Playgroud)

示例输出:

加载面膜

在此输入图像描述