解決Element組件的坑:抽屜drawer和彈窗dialog
業(yè)務場景
因為項目需要封裝組件,考慮二次封裝抽屜組件el-drawer,在父組件控制抽屜組件的顯示隱藏。
需要在指定的組件中打開抽屜。
在抽屜組件el-drawer里使用自己封裝的一個自定義組件。
存在以下兩個大問題:
- 父組件控制抽屜組件的顯示隱藏效果無法呈現(xiàn)
- 抽屜組件里的自定義組件沒有加載/創(chuàng)建出來
針對第一個問題,具體解決方案
- 父組件:
<Drawer :isShowDrawer.sync = "isShowDrawer" @closeDrawer="isShowDrawer = $event"></Drawer>
- 子組件Drawer:
<el-drawer :visible.sync="isShow" direction="rtl" ref="drawerExam"></el-drawer>
...
props: {
isShowDrawer: {
type: Boolean,
default: false
},
},
computed: {
isShow: {
set(val) {
this.$emit('closeDrawer', val);
},
get() {
return this.isShowDrawer;
}
},
},若想實現(xiàn),在指定的組件中打開抽屜,需要添加以下樣式
- 父組件樣式:
{
position: relative;
overflow: hidden;
}- 抽屜組件:
設置position為絕對定位,但是會出現(xiàn)一個問題:v-modal遮罩層是滿屏顯示的

因此最終解決方案為:
先在抽屜組件外套一層div標簽,再修改內部樣式
<div class="drawerExam-container">
<el-drawer :visible.sync="isShow" direction="rtl" ref="drawerExam" @open="openDrawer()"></el-drawer>
</div>
...
.drawerExam-container {
::v-deep .v-modal {
position: absolute;
}
}針對第二個問題,具體解決方案
在抽屜組件里,引入了自己封裝的組件Checkbox,不能出現(xiàn)的原因是:Element官網(wǎng)有提到

如下我在抽屜組件中引入了Checkbox(自己封裝的組件),其中,dataList是父組件傳給Checkbox的數(shù)據(jù),chooseClass是Checkbox返回來的數(shù)據(jù)
<el-drawer :visible.sync="isShow" direction="rtl" ref="drawerExam" @open="openDrawer()">
<Checkbox :dataList="easy" @chooseEasy="updateForm" ref="easyRef"></Checkbox>
</el-drawer>解決方法:
- 給el-drawer增加open回調函數(shù)
- 通過使用Checkbox內部方法賦值的方式,讓Checkbox組件能夠擁有值(因為在Checkbox組件內接收不到父組件傳過去的dataList,才考慮使用Checkbox組件內部方法直接給組件賦值
el-drawer的open回調函數(shù):
...
openDrawer() {
this.$nextTick(() => {
setTimeout(() => {
this.$refs.easyRef.UpdateList(this.easy);
}, 0)
})
},
Checkbox組件:
...
UpdateList(arr) {
this.newDataList = arr;
// 置空該組件原有的值
this.checkboxGroup = [];
this.chooseEasy();
},
// 多選選中后給父組件傳值
chooseEasy() {
this.$emit('chooseEasy', this.checkboxGroup);
},總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue如何監(jiān)測數(shù)組類型數(shù)據(jù)發(fā)生改變的(推薦)
這篇文章主要介紹了Vue如何監(jiān)測數(shù)組類型數(shù)據(jù)發(fā)生改變的,本文通過實例代碼圖文詳解給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11
vue?elementui?實現(xiàn)圖片上傳后拖拽排序功能示例代碼
這篇文章主要介紹了vue?elementui?實現(xiàn)圖片上傳后拖拽排序功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
vue查詢數(shù)據(jù)el-table不更新數(shù)據(jù)的解決方案
這篇文章主要介紹了vue查詢數(shù)據(jù)el-table不更新數(shù)據(jù)的問題及解決方案,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
Vue項目如何根據(jù)圖片url獲取file對象并用axios上傳
這篇文章主要介紹了Vue項目如何根據(jù)圖片url獲取file對象并用axios上傳問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
在Vue3項目中使用VueCropper裁剪組件實現(xiàn)裁剪及預覽效果
這篇文章主要介紹了在Vue3項目中使用VueCropper裁剪組件(裁剪及預覽效果),本文分步驟結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

