Sencha touch 仓库装载上的装载指示器

Sencha touch 仓库装载上的装载指示器,sencha-touch,sencha-touch-2,intellisense,Sencha Touch,Sencha Touch 2,Intellisense,我的存储正在加载。因此,我希望在加载存储数据时显示加载指示器。是否有任何函数可以知道列表存储是否已完全加载? 请帮帮我我找了这么长时间了 这是我的密码: Ext.Viewport.setMasked({ xtype: 'loadmask', message: 'Loading' }); Ext.define('MyApp.view.Myview1', { extend: 'Ext.Panel', requires: ['Ext.List', 'Ext.util

我的存储正在加载。因此,我希望在加载存储数据时显示加载指示器。是否有任何函数可以知道列表存储是否已完全加载? 请帮帮我我找了这么长时间了

这是我的密码:

Ext.Viewport.setMasked({
    xtype: 'loadmask',
    message: 'Loading'
});

Ext.define('MyApp.view.Myview1', 
{
    extend: 'Ext.Panel',
    requires: ['Ext.List', 'Ext.util.JSON'],

    config: {
        layout: 'hbox',
        items: [
            {
                xtype: 'panel',
                layout: 'fit',
                flex: 1,
                items: [
                    {
                        xtype: 'list',
                        itemTpl:
                            '<div class="myContent">' +
                            '<div>{name}</div>' +
                            '</div>',
                        store: 'MainStore',
                        disclosure: true,
                        store.on({
                            load: {
                                fn: function( store ) {
                                    Ext.Viewport.setMasked(false);
                                },
                                scope: this,
                                single: true
                            }
                        });
                        store.load();
                    }
                ]
            }
        ]
    }
});

我的要求是在从存储加载数据时显示指示器,并在列表中包含存储中的所有数据后将其删除。

您必须将加载事件绑定到此存储,如下代码所示

  Ext.Viewport.setMasked({
     xtype: 'loadmask',
     message: 'Loading'
   });

   store.on({
    load: {
         fn: function( store ) {
            Ext.Viewport.setMasked(false);
         },
         scope: this,
         single: true
    }
});

store.load();

这个很简单,就像@Naresh说的

将加载掩码放在函数中

  Ext.Viewport.setMasked({
            xtype: 'loadmask',
            message: 'Please Wait...'
        });
并在存储加载后禁用loadmask

storectn.load({
                callback: function (records, operation, success, response) {
                    if (success==1) {
                       // Ext.Msg.alert('success');
                         Ext.Viewport.setMasked(false);
                    } else {
                       // Ext.Msg.alert('Failed');
                         Ext.Viewport.setMasked(false);


                    }
                }
            });

我终于解决了这个问题:

Sencha在很短的时间内加载存储和列表,但加载UI需要很长时间。因此,在加载完存储之后,如果您使用setTimeout设置回调以删除指示符,那么问题将得到解决。因为当UI加载完成时,它将调用您的最终方法,因为JavaScript是单线程语言

Ext.Viewport.setMasked({
     xtype: 'loadmask',
     message: 'Loading'
   });

   store.on({
    load: {
         fn: function( store ) {
            setTimeout(function(){
                Ext.Viewport.setMasked(false);
            }, 100);
         },
         scope: this,
         single: true
    }
});

store.load();
在这里,即使setTimeout应该在100毫秒后调用,它也会等待UI先加载,然后再调用


如果使用store.addRecord通过自定义查询动态加载存储,则加载所有数据后,只需调用setTimeout调用。它也可以工作。

我们需要设置MaskPrevent用户交互,并在sencha touch中加载数据时显示加载消息。Sencha touch setMasked提供将遮罩添加到容器中的选项。但每次我们都需要手动添加掩码并移除掩码。在这一瞬间,我们可以使用商店监听器手动做一些事情

我在这里的要求是我有一个积垢过程存储。所以每次我尝试同步和加载数据时,我都想设置视图的掩码。我的商店代码如下所示

我为此任务使用了beforeload、beforesync、load、metachange、removeecords、updaterecord、write、addrecords事件

请点击链接访问下面的url以获取完整的源代码。[通过解决方案解决]


我需要更多的建议。你能发布你的代码吗?这样我就可以给你更多的信息。有一个商店意味着你商店的目标。好的。。我发布了我在问题中尝试的代码。请看一看