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