Vue中如何對ElementUI的Dialog組件封裝
對ElementUI的Dialog組件封裝
1.子組件的寫法
<el-dialog
? ? title="提示"
? ? :visible.sync="visible"
? ? :close-on-click-modal="false"
? ? @close="QualityDialogClose"
>
? ? <span slot="footer" class="dialog-footer">
? ? ? ? <el-button @click="QualityDialogClose">取 消</el-button>
? ? ? ? <el-button type="primary" @click="QualityDialogClose">確 定</el-button>
? ? </span>
</el-dialog>
<script>
export default {
? ? name: "QualityDialog",
? ? components: {},
? ? props: {
? ? ? ? QualityDialogFlag: {
? ? ? ? ? ? default: false
? ? ? ? },
? ? },
? ? data() {
? ? ? ? return {
? ? ? ? ? ? visible: false
? ? ? ? };
? ? },
? ? created() {},
? ? mounted() {},
? ? methods: {
? ? ? ? QualityDialogClose() {
? ? ? ? ? ? this.$emit("update:QualityDialogFlag", false);
? ? ? ? }
? ? },
? ? watch: {
? ? ? ? QualityDialogFlag() {
? ? ? ? ? ? this.visible = this.QualityDialogFlag;
? ? ? ? },
? ? }
};
</script>2.父組件的寫法
注意:父組件在給子組件傳值的時候必須使用.sync, 不然會出現(xiàn)實時監(jiān)控失敗
<template>
?? ?<QualityDialog :QualityDialogFlag.sync="QualityDialogFlag"/>
?? ?<el-button type="primary" @click="QualityClick">打開Dialog</el-button>
</template>
<script>
export default {
? ? components: {
? ? ? ? QualityDialog: ()=> import("./QualityDialog")
? ? }
? ? props: {
? ? ? ? QualityDialogFlag: {
? ? ? ? ? ? default: false
? ? ? ? },
? ? },
? ? data() {
? ? ? ? return {
? ? ? ? ? ? /** QualityDialog 組件需要的數(shù)據(jù) */
? ? ? ? ? ? QualityDialogFlag: false
? ? ? ? ? ? /** QualityDialog 組件需要的數(shù)據(jù) */
? ? ? ? };
? ? },
? ? methods: {
? ? ? ? QualityClick() {
? ? ? ? ? ? this.QualityDialogFlag = true
? ? ? ? }
? ? }
};
</script>.sync 修飾符說明
可以通過.sync修飾符來達到雙向綁定的效果
@close="$emit('update: QualityDialogFlag' , false)"說明改變父組件的數(shù)據(jù)
1.不添加.sync修飾符, 雖然在關(guān)閉彈框的時候修改了父組件的數(shù)據(jù),但是下次再次打開的時候就會失敗,原因是父組件沒有監(jiān)聽到子組件的數(shù)據(jù)改變,父子組件沒有雙向綁定
父組件
<QualityDialog :QualityDialogFlag="QualityDialogFlag" :QualityDialogData="QualityDialogData"/>
子組件
<el-dialog
? ? title="提示"
? ? :visible.sync="visible"
? ? :close-on-click-modal="false"
? ? @close="$emit('update: QualityDialogFlag' , false)"
>
</el-dialog>
data() {
? ? return {
? ? ? ? visible: this.QualityDialogFlag
? ? };
},
watch: {
? ?QualityDialogFlag() {
? ? ? ?this.visible = this.QualityDialogFlag;
? ?}
}2.添加.sync 修飾符,添加之后可以實現(xiàn)父子組件的雙向綁定,當(dāng)子組件修改父組件轉(zhuǎn)遞的數(shù)據(jù)之后,父組件可以獲取子組件的數(shù)據(jù)
父組件
<QualityDialog :QualityDialogFlag.sync="QualityDialogFlag" :QualityDialogData="QualityDialogData"/>
子組件寫法不變
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解vue+axios給開發(fā)環(huán)境和生產(chǎn)環(huán)境配置不同的接口地址
這篇文章主要介紹了詳解vue+axios給開發(fā)環(huán)境和生產(chǎn)環(huán)境配置不同的接口地址,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
vue 實現(xiàn)tab切換保持數(shù)據(jù)狀態(tài)
這篇文章主要介紹了vue 實現(xiàn)tab切換保持數(shù)據(jù)狀態(tài),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
nuxt 自定義 auth 中間件實現(xiàn)令牌的持久化操作
這篇文章主要介紹了nuxt 自定義 auth 中間件實現(xiàn)令牌的持久化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

