el-table實(shí)現(xiàn)給每行添加loading效果案例
前言
如圖所示,在el-table表格中,使用el-switch組件,想讓每個(gè)組件在開關(guān)的時(shí)候都有一個(gè)loading效果,也可以是el-button,原理都是類似,下面直接給方案。
錯(cuò)誤分析
錯(cuò)誤代碼如下,可以看見,我給switchLoading
應(yīng)用到每一個(gè)el-switch組件上了,所以每次都是全部組件loading,只要我們給它單獨(dú)出來(lái)就可以搞定。
<el-table-column prop="enable" label="是否啟用" width="80" align="center"> <template #default="{ row }"> <el-switch v-model="row.enable" active-text="正常" inactive-text="停用" inline-prompt :loading="switchLoading" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" @change="changeHandle(row)" /> </template> </el-table-column> //ts const changeHandle = (row) => { switchLoading.value = true changeEnable(row.id) .then((resp) => { ElMessage.success('操作成功!') }) .catch((error) => { console.log(error) }) .finally(() => { switchLoading.value = false }) }
解決方法
方案一
讓每一個(gè)switch組件都有自己的loading
,那直接在row的屬性上加一個(gè)loading屬性即可,這樣最方便,也不用我們聲明變量。
// template <el-table-column prop="enable" label="是否啟用" width="80" align="center"> <template #default="{ row }"> <el-switch v-model="row.enable" active-text="正常" inactive-text="停用" inline-prompt :loading="row.loading" // 改動(dòng)位置 style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" @change="changeHandle(row)" /> </template> </el-table-column> //ts const changeHandle = (row) => { row.loading = true // 改動(dòng)位置 changeEnable(row.id) .then((resp) => { ElMessage.success('操作成功!') }) .catch((error) => { console.log(error) }) .finally(() => { row.loading = false // 改動(dòng)位置 }) }
方案二
給loading屬性加一個(gè)判斷switchLoading == row.id
,只有在id相等的時(shí)候才進(jìn)行l(wèi)oading效果,這樣需要我們聲明一個(gè)const switchLoading = ref('')
變量來(lái)存儲(chǔ)當(dāng)前的id,也可以解決!
// template <el-table-column prop="enable" label="是否啟用" width="80" align="center"> <template #default="{ row }"> <el-switch v-model="row.enable" active-text="正常" inactive-text="停用" inline-prompt :loading="switchLoading == row.id" // 改動(dòng)位置 style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" @change="changeHandle(row)" /> </template> </el-table-column> // ts const changeHandle = (row) => { switchLoading.value = row.id // 改動(dòng)位置 changeEnable(row.id) .then((resp) => { ElMessage.success('操作成功!') }) .catch((error) => { console.log(error) }) .finally(() => { switchLoading.value = '' // 改動(dòng)位置 }) }
最終效果
以上2種方案都可以解決,效果如下,你喜歡哪種解決方案呢?
我選擇第一種同理,在table中的按鈕、下拉搜索等,也是一樣的解決方法。
總結(jié)
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue ECharts直角坐標(biāo)系配置詳細(xì)講解
數(shù)據(jù)的重要性我們大家都知道,就算再小的項(xiàng)目中都可能使用幾個(gè)圖表展示,我最近在做項(xiàng)目的過(guò)程中也是需要用到圖表,最后選擇了echarts圖表庫(kù)2022-12-12vue監(jiān)聽頁(yè)面滾動(dòng)到某個(gè)高度觸發(fā)事件流程
這篇文章主要介紹了vue監(jiān)聽頁(yè)面滾動(dòng)到某個(gè)高度觸發(fā)事件流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue3+ts實(shí)現(xiàn)一個(gè)表單組件的詳細(xì)代碼
這篇文章主要介紹了vue3+ts實(shí)現(xiàn)一個(gè)表單組件的詳細(xì)代碼,確保通過(guò)axios調(diào)用后端接口來(lái)獲取省市區(qū)和街道數(shù)據(jù),并在選擇省市區(qū)時(shí)加載相應(yīng)的街道數(shù)據(jù),需要的朋友可以參考下2024-07-07vue-meta實(shí)現(xiàn)router動(dòng)態(tài)設(shè)置meta標(biāo)簽的方法
這篇文章主要介紹了vue-meta實(shí)現(xiàn)router動(dòng)態(tài)設(shè)置meta標(biāo)簽,實(shí)現(xiàn)思路非常簡(jiǎn)單內(nèi)容包括mata標(biāo)簽的特點(diǎn)和mata標(biāo)簽共有兩個(gè)屬性,分別是http-equiv屬性和name屬性,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解需要的朋友可以參考下2022-11-11vite中的glob-import批量導(dǎo)入的實(shí)現(xiàn)
本文主要介紹了vite中的glob-import批量導(dǎo)入的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07仿ElementUI實(shí)現(xiàn)一個(gè)Form表單的實(shí)現(xiàn)代碼
這篇文章主要介紹了仿ElementUI實(shí)現(xiàn)一個(gè)Form表單的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04vue實(shí)現(xiàn)todolist基本功能以及數(shù)據(jù)存儲(chǔ)功能實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家介紹了vue實(shí)現(xiàn)todolist基本功能以及數(shù)據(jù)存儲(chǔ)功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04vue中獲取滾動(dòng)table的可視頁(yè)面寬度調(diào)整表頭與列對(duì)齊(每列寬度不都相同)
這篇文章主要介紹了vue中獲取滾動(dòng)table的可視頁(yè)面寬度,調(diào)整表頭與列對(duì)齊(每列寬度不都相同),需要的朋友可以參考下2019-08-08詳解用vue.js和laravel實(shí)現(xiàn)微信支付
本篇文章主要介紹了用vue.js和laravel實(shí)現(xiàn)微信支付,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06