5

我有一个使用 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 ]
    }); 
    }
    });

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

4

1 回答 1

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 ]
        }); 
    }
});

样本输出:

加载蒙版

在此处输入图像描述

于 2012-04-27T11:35:25.820 回答