在前端开发中,经常会碰到这样的场景,在父组件中,打开一个子组件,当点击子组件界面上的关闭按钮时,可以直接关闭子组件,并且能够同时更新父组件中的值,比如在element-ui
框架中,经常会用到dialog
,当点击dialog
界面上的关闭按钮时,可以直接关闭弹窗,在父组件中设置dialog
显示的代码中有一个visible
属性,并且还有一个.sync
,看了下dialog
的源码,具体实现方式如下所示:
创建属性
首先在props
添加一个visible
的属性,用于控制界面的显示与隐藏,如下所示:
.js文件
export default {
name: 'TreeManager',
props: ['visible'],
data() {
return {
};
},
components: {
},
created() {
},
mounted() {
},
methods: {
closeHandler() {
this.$emit('update:visible',false);
},
},
};
.vue
<template>
<div class="layer-manager" v-show="visible">
<el-card class="layer-card">
<div slot="header" class="clearfix">
<span>图层管理</span>
<div class="tree-menu">
<el-button
type="text"
icon="el-icon-document-add"/>
<el-button
class="btn-close"
type="text"
icon="el-icon-close"
@click="closeHandler"/>
</div>
</div>
</el-card>
</div>
</template>
<script src='./index.js'>
</script>
<style lang='less'>
@import './index.less';
</style>
父组件
在父组件中只需通过一个变量设置给:visible.sync
就可以了。
<TreeManager :visible.sync="layerVisible" class="layer-manager-layout"/>
核心代码
其实起作用的主要就是靠以下的代码来进行更新。
closeHandler() {
this.$emit('update:visible',false);
},
网友评论