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