ext 的loadmask 與ajax的同步請求水火不容

因爲ajax 的同步請求會有一段請求時間。有的短。有的長,對於短的咱們仍是能接受的,不過長的話就必須處理一下了,ajax

就好比處於ext 4.2.0的框架下,須要一個遮掩的樣式,框架是有自帶的,loadmask ,這個東西,不過是放在同步ajax中的話框架

loadmask函數處於哪一個位置都會被同步ajax 放到ajax請求結束以後在 觸發,並且使用同步ajax中 ,頁面的話也是等ajax請求異步

完在渲染的,這樣的狀況下,ajax的請求時間這個空擋仍是沒有被遮掩的。這種狀況的處理是,使用異步的ajax,ide

同步與異步的區別是同步的狀況下,一切與頁面交互的東西都會被放到ajax請求結束後在觸發,而異步並非,他能夠一邊向函數

後臺請求數據一邊處理頁面的事件。這就是異步的好處,不過異步也有一些地方是讓人不舒服的,就是異步請求到的數據不能spa

在外部使用,這也一個頭疼的地方。不過這一點我還沒深刻的研究過,也不知道是否是與異步請求的時間有關。orm

重點是同步ajax請求期間不能與頁面交互事件

ext 的loadmask的遮掩效果:rem

1、能夠直接應用在元素上,如:  get

target 能夠是:document.body、元素、DOM節點、id  

var loadMarsk = new Ext.LoadMask(target, {  

    msg     : '正在刪除數據,請稍候。。。。。。',  

    removeMask  : true// 完成後移除     這個沒有嘗試過,不知道是什麼完成以後移除

});  

loadMarsk .show();  //顯示  

loadMarsk .hide();  //隱藏  

2、還能夠和Ext.data.Store結合,可將效果與Store的加載達到同步,如:  

var loadMarsk = new Ext.LoadMask(document.body, {  

    msg     : '數據處理中,請稍候。。。。。。',  

    disabled    : false,  

    store   : store  

});  

3、在form的submit方法中有waitMsg屬性來達到上面的效果 ,如:  

form.submit({  

     waitMsg : '正在提交數據...'  

     .....  

實例代碼:  

//添加到body  

    var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});  

    myMask.show();  

//添加到grid  

    var grid =  new Ext.grid.GridPanel({  

         cm     : myCm,  

         store  : myStore,  

         loadMask   : {  

        msg : '加載數據中,請稍候...'  

         }  

    });  

相關文章
相關標籤/搜索