在一次vue+element-ui後台管理系統的專案中,遇到這樣乙個問題,引入element-ui載入框後,loading會佔滿整個螢幕,雖然通過改變路由實現了區域性重新整理,但是loading的全屏重新整理,讓人看上去很是不爽,以為是全域性重新整理。再乙個問題就是,乙個頁面中可能含有的多個請求,在***彙總設定關閉loading後,會出現的問題就是,有些資料還是空的,但是loading框就已經關閉了我們需要實現的是所有請求完成後關閉loading。所以這是另乙個問題。
所以為了解決這兩個問題做此總結,幫助更多的小夥伴脫坑。
如果要實現全域性的重新整理則可以檢視博主的另一片總結:
傳送門
沒有思路就沒有出路,先說思路:
區域性的loading框的出現,element-ui在vue中引入後,就會預設在vue原型鏈上掛在乙個loaiding方法,可以通過vue.prototype.$loading看到,解決問題的關鍵就在這個方法中,該方法中可以設定這麼幾個屬性lock,text,target,background,我們搞清楚這些,問個問題也就迎刃而解。lock可以看作是loading的開關,text則是loading的文字的提示資訊。target則是根據型別顯示需要出現loading的區域。background則是loading的bgcolor
所有請求完成後再關閉loading,預設大家都知道vue***。解決思路比較簡單,建立乙個定時器,在request時,num++,在response時num--當num<=0時,則所有請求都有了結果,這個時候我們就可以關閉loading了。
情景及demo
後台管理系統,header,aside,main,除了loading,404外,實現main的區域性重新整理,且所有請求完成後再關閉loading框。 先看我們的網路請求層,封裝的fetch.js檔案.
import axios from 'axios'import from 'element-ui'import router from '../router/permission'import vue from 'vue' //下來我們就需要檢視我們的主入口檔案home.vue.loading框設定區域性重新整理,且所有請求完成後關閉loading框
let loading;
function
startloading() );
}function
endloading() //
宣告乙個物件用於儲存請求個數
let needloadingrequestcount = 0;
function
showfullscreenloading()
needloadingrequestcount++;
};function
tryhidefullscreenloading() };
//請求攔截
axios.interceptors.request.use(config =>, err =>);
return
promise.resolve(err);
})//
響應攔截
axios.interceptors.response.use(res =>
else
if (res.data.code == 401)
else
if (res.data.code == 201) );
return
promise.reject(res);
} return
promise.reject(res);
}, err =>);
} else
if (err.response.status == 403)
else
); }
return
promise.reject(err);})
let base = '';
export const postrequest = (url, params) =>$`,
data: params,
transformrequest: [
function
(data)
return
ret }],
headers: );
}export const getrequest = (url, data = '') =>$`
});}
<關鍵實現以上兩部就可實現頭部預覽效果區域性重新整理。template
>
<
el-container
>
<
el-header
class
="header-wraper"
>
<
admin-header
>
admin-header
>
el-header
>
<
el-container
class
="container"
>
<
el-aside
>
<
admin-aside
>
admin-aside
>
el-aside
>
<
el-main
class
="loading-area"
>
<
keep-alive
>
<
router-view
v-if
="this.$route.meta.keepalive"
>
router-view
>
keep-alive
>
<
router-view
v-if
="!this.$route.meta.keepalive"
>
router-view
>
el-main
>
el-container
>
el-container
>
template
>
<
script
>
import adminaside from
'@/components/commons/aside/index';
import adminheader from
'@/components/commons/header/index
'export
default
, data ()
},}script
>
<
style
lang
="less"
scoped
>
.header-wraper
.container
style
>
element ui實現前端分頁
element ui裡的分頁元件 size change handlesizechange current change handlecurrentchange current page page page sizes 20,50,100 background page size limit lay...
elementUI實現前端分頁
按照他的文件來寫分頁,最主要的是el table裡面展示的資料怎麼處理 最主要就是上面標紅這一塊的處理 allcommoditylist是後台取得資料,currentpage是當前頁,初始值0,pagesize當前需要展示的資料,初始值10 slice 方法從已有陣列中返回選定的資料 最主要就是上面...
基於element ui實現table可配置化
感謝 餓了麼前端團隊提供元件化框架elememt ui,本文基礎元件使用element ui。在開發一些系統過程中,使用table作資料展示在所難免。先來看看el table元件。非常簡單易用的元件,根據提供的data資料,配置table每一列的資料和label。沒錯,這樣似乎都是ok的,但是在開發...