Vue自定义组件之对话框的开启和关闭 computed set get

对话框的开启和关闭

基于 element-ui 的 Dialog 对话框
Vue允许注册组件,把一个复杂的页面分成多个组件,会使代码逻辑更加清晰。这里假设一个列表页面中,点击一个按钮,可以打开一个添加功能的对话框。

代码分析

父组件

<template>
    <div>
    	<my-son-dialog v-model="visible"></my-son-dialog>
		<button @click="openDialog">点我打开添加对话框</button>
    </div>
</template>

<script>
import sonDialog from './sonDialog.vue'	// 这里引入 添加对话框
export default {
    name: 'MyDialog',
    components:{
		'my-son-dialog': sonDialog  // 注册 组件
	},
    data() {
        return {
        	visible: false
        }
    },
    methods: {
        openDialog() {	// 这里通过visible,控制对话框的开启
        	this.visible = true
        }
    }
}
</script>

子组件

<template>
    <div>
		<el-dialog 
			title="提示" 
			:visible.sync="dialogVisible" 
			width="30%" >
			  <span>这是一段信息</span>
			  <span slot="footer" class="dialog-footer">
			    	<el-button @click="dialogVisible = false">取 消</el-button>
			    	<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
			  </span>
		</el-dialog>
    </div>
</template>

<script>
export default {
    name: 'sonDialog',
    props: {
		 value: {
            //控制弹窗打开
            type: Boolean,
            required: true
        },
	},
    computed: {
        dialogVisible: {	// 这里通过 computed 方法 来定义  变量 dialogVisible
            get: function () {	// 初始化 dialogVisible 的值
                return this.value
            },
            set: function (val) {	// 当 dialogVisible 需要赋值时,直接改变 父组件中的值
                this.$emit('input', val)
            }
        }
    }
}
</script>

版权声明:本文为weixin_47276928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。