国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue工程全局設(shè)置ajax的等待動效的方法

2019-11-19 12:04:59
字體:
供稿:網(wǎng)友

最近在做vue的項目,使用了element-ui作為ui組件庫,采用vuex進(jìn)行狀態(tài)管理,與后臺的請求交互采用axios庫實現(xiàn),原本做的頁面,ajax請求個數(shù)也只有三個,將等待動畫的顯示和隱藏通過mutation去控制,但是項目越來越大,請求也越來越多,能否將這個等待動畫與ajax的請求相關(guān)聯(lián)呢?

實現(xiàn)等待動效

在element-ui中,提供了兩個方法進(jìn)行調(diào)用loading組件,一個是在需要遮罩的div容器中添加v-loading指令,另一種就是以服務(wù)形式調(diào)用:Loading.service(options),在本項目中,在加載數(shù)據(jù)時,進(jìn)行全局遮罩,所以設(shè)置let loadingInstance = Loading.service({fullscreen:true})。關(guān)閉服務(wù)形式的調(diào)用:loadingInstance.close();

axios的攔截器

個人對攔截器的作用的理解是,在請求發(fā)送前和響應(yīng)處理前,對該ajax請求進(jìn)行一定的設(shè)置或者處理,方便對工程內(nèi)的ajax請求進(jìn)行統(tǒng)一處理,減少重復(fù)代碼。

 //請求攔截器 axios.interceptors.request.use((config) => {  // 在發(fā)送請求之前做些什么  return config; }, (error) => {  // 對請求錯誤做些什么  return Promise.reject(error); }); // 添加響應(yīng)攔截器 axios.interceptors.response.use((response) => {  // 對響應(yīng)數(shù)據(jù)做點什么  return response; }, (error) => {  // 對響應(yīng)錯誤做點什么  return Promise.reject(error); });

有了攔截器,我們可以想到,在ajax請求發(fā)送前開啟loading動畫,在接收響應(yīng)后關(guān)閉loading動畫。但是要對每個ajax都開關(guān)一下loading動畫嗎?其實不必。只需要實現(xiàn)一個ajax的計數(shù)器,在個數(shù)大于0時,開啟動畫,在個數(shù)為0的時候,關(guān)閉動畫。

計數(shù)器實現(xiàn)

let loadingInstance;let loadCounter = {  count:0,  show:() => {    if(count < 0){     this.count ++;     loadingInstance = Loading.service({fullscreen:true});    }  },  hide:()=>{    if(count > 0){      this.count --;      this.$nextTick(()=>{//以服務(wù)的方式調(diào)用的 Loading 需要異步關(guān)閉        loadingInstance.close();      });    }  }}

使用方法

 //請求攔截器 axios.interceptors.request.use((config) => {  loadCounter.show();  return config; }, (error) => {  return Promise.reject(error); }); // 添加響應(yīng)攔截器 axios.interceptors.response.use((response) => {  loadCounter.hide();  return response; }, (error) => {  return Promise.reject(error); });

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐亭县| 特克斯县| 高邮市| 大连市| 乌拉特中旗| 汉沽区| 徐水县| 衡阳县| 三都| 海安县| 锡林郭勒盟| 巩义市| 兴和县| 象州县| 兴义市| 合作市| 获嘉县| 云南省| 阜宁县| 晋中市| 四平市| 株洲县| 凉山| 乌审旗| 巩义市| 菏泽市| 星子县| 太原市| 靖宇县| 灯塔市| 尤溪县| 霸州市| 白朗县| 南江县| 青岛市| 措勤县| 晴隆县| 佛冈县| 蒙山县| 涟源市| 安阳市|