2013-10-08 46 views
0

我的商店正在花時間加載。因此,我想在加載存儲數據時顯示加載指示器。是否有任何函數知道列表存儲是完全加載還是不加載? 請幫助me..I正在尋找這很長一段時間..加載存儲加載指示器

這裏是我的代碼:

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

我的要求是,以顯示指標,同時從商店的加載數據和名單都將其移除來自商店的數據。

回答

0

您必須加載事件像綁定到該商店下面的代碼

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

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

store.load(); 
+0

哪裏存儲是商店name.right? – almakki

+0

我嘗試了下面的代碼..但它會拋出錯誤: – almakki

+0

我需要更多暗示 – almakki

0

這一個是簡單,就像@Naresh說你的函數內部

放負載面具

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

並且在存儲負載後禁用加載掩碼

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


        } 
       } 
      }); 
0

最後我解決了這個問題:)

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.add(記錄)自定義查詢動態加載的商店,然後加載所有數據後,你只需要調用setTimeout調用。它也會工作。

0

我們需要在sencha touch中加載數據時設置屏蔽(防止用戶交互並顯示加載消息)。 Sencha touch setMasked(<>)提供了將掩碼添加到容器的選項。但每次我們需要手動添加蒙版並移除蒙版。這個手動做的事情我們可以使用存儲監聽器。

我的要求在這裏是我有一個商店的CRUD過程。所以每當我嘗試同步並加載數據的時候,我都想要設置視圖的掩碼。我的商店代碼如下所示。

我用這個任務的beforeload,beforesync,load,metachange,removerecords,updaterecord,write,addrecords事件。

請點擊以下鏈接訪問以下url以獲得完整源代碼。 [通過溶液解決]

http://saravanakumar.org/blog/2014/04/sencha-touch-setmask-display-load-mask-or-waiting-while-loading-data-in-store/