封装一个包含van-popup van-dropdown-menu 并且可以写入其他内容的组件
时间: 2023-08-08 10:07:16 浏览: 197
可以尝试以下的代码实现:
```vue
<template>
<div class="my-component">
<van-popup v-model="showPopup" position="bottom">
<van-dropdown-menu @click="onMenuItemClick">
<van-dropdown-item
v-for="(item, index) in menuItems"
:key="index"
:title="item.title"
/>
</van-dropdown-menu>
<div class="content">
<slot></slot>
</div>
</van-popup>
</div>
</template>
<script>
export default {
name: "MyComponent",
data() {
return {
showPopup: false,
menuItems: [
{ title: "Menu Item 1" },
{ title: "Menu Item 2" },
{ title: "Menu Item 3" }
]
};
},
methods: {
onMenuItemClick(index) {
// Do something when a menu item is clicked
console.log(`Menu item ${index + 1} clicked`);
this.showPopup = false;
}
}
};
</script>
<style scoped>
.content {
padding: 10px;
}
</style>
```
这个组件包含了一个 `van-popup` 和一个 `van-dropdown-menu`,并且可以写入其他内容。`van-dropdown-menu` 中的菜单项使用了 `v-for` 循环渲染,可以根据需要添加或删除菜单项。在组件中还定义了一个 `menuItems` 数组,用于存储菜单项的数据。`onMenuItemClick` 方法会在菜单项被点击时被调用,并且会将 `showPopup` 属性设置为 `false`,使弹出框关闭。组件还使用了插槽来允许用户在组件中写入其他内容。
阅读全文