父App.vue
<template>
<div id="app">
<!-- 使用组件 Modal 用修饰符将 visible 进行”双向绑定“ -->
<Modal ref="mobileModal" :visible.sync="visible" @confirm="confirm"></Modal>
<button @click="showModal">打开修改手机号的弹框</button>
</div>
</template>
<script>
// 引入组件
import Modal from '@/components/Modal.vue';
export default {
name: 'app',
// 注册组件
components: {
Modal
},
data: function() {
return {
visible: false
};
},
methods: {
// 自定义函数 confirm
confirm() {
console.log('confirm');
},
showModal() {
this.visible = true
// 提示:$nextTick 可以确保 Modal 渲染后再执行里面的函数
this.$nextTick(() => {
this.$refs.mobileModal.focus();
})
}
}
};
</script>
<style lang="scss">
#app {
width: 100%;
height: 100%;
}
</style>
子Modal.vue
<template>
<div class="modal" v-if="visible">
<div class="modal-content">
<div class="modal-header">
<div class="title">修改手机号</div>
<button class="btn-close" @click