vue封装a-modal组件,保留默认事件
时间: 2023-08-31 21:24:27 浏览: 130
vuex-modal:简单的模态组件Vuex模块
你可以在封装a-modal组件时,在模板中使用v-on="$listeners"来将父组件传递的事件绑定到子组件上。同时,在子组件的props中添加modalOptions对象,可以保留默认事件。
示例代码如下:
```html
<template>
<a-modal v-bind="modalOptions" v-on="$listeners">
<!-- 插槽内容 -->
</a-modal>
</template>
<script>
import AModal from 'a-modal';
export default {
components: {
AModal
},
props: {
modalOptions: {
type: Object,
default: () => ({})
}
}
};
</script>
```
在父组件中,可以通过v-bind:modal-options来传递modalOptions对象,例如:
```html
<template>
<div>
<button @click="showModal">打开模态框</button>
<my-modal :modal-options="modalOptions" @ok="handleOk" @cancel="handleCancel">
<p>这是模态框的内容</p>
</my-modal>
</div>
</template>
<script>
import MyModal from './MyModal';
export default {
components: {
MyModal
},
data() {
return {
modalOptions: {
title: '提示',
width: '400px'
}
};
},
methods: {
showModal() {
// 打开模态框的代码
},
handleOk() {
// 确定按钮的回调函数
},
handleCancel() {
// 取消按钮的回调函数
}
}
};
</script>
```
在子组件中,modalOptions对象可以在a-modal组件的props中定义,例如:
```html
<template>
<a-modal v-bind="modalOptions" v-on="$listeners">
<slot></slot>
</a-modal>
</template>
<script>
import AModal from 'a-modal';
export default {
components: {
AModal
},
props: {
modalOptions: {
type: Object,
default: () => ({
title: '提示',
width: '400px'
})
}
}
};
</script>
```
阅读全文