[封装自己的ui组件库] 封装dialog遇到的难点

141 阅读1分钟

效果

QQ录屏20221117232244.gif

问题

1、用户在点击组件外的按钮可以控制dialog隐藏(外部源数据的显示与隐藏),但是内部的dialog控制该如何改变外部的data数值

2、如何嵌套dialog

思路

1、解决问题一可利用.sync修饰符解决

.sync是一个语法糖。是父组件监听子组件更新某个props的请求的缩写语法

使用修饰符后,内部使用$emit('update:propsName', value)即可同步更新外部的值

外部

 <ty-dialog title="提示" :visible.sync="visibleF" width="40%" :before-close="handlerClose" @open="open"
            @closeHandler="close">
            <span>全屏</span>
            <div class="btns" slot="footer">
                <ty-button @click="visibleF = false">取消</ty-button>
                <ty-button type="success" @click="visibleF = false">提交</ty-button>
            </div>
        </ty-dialog>

组件内

 // 关闭dialog
        close() {
            this.$emit('closeHandler')
            this.$emit('update:visible', false)
        },

2、问题二的解决可以嵌套的dialog插入到body中解决