Jor*_*dan 5 slots vue.js v-model vuejs3
我正在尝试找到一种方法来使用我制作的模型组件,但能够从其中一个插槽关闭模型。
我可以将数据传递到插槽,但不能使用 v-model,并且不相信我可以更改插槽属性来关闭模型打开状态
https://v3.vuejs.org/guide/component-slots.html#scoped-slots
这是我正在使用的弹出窗口
<PopoverModal>
<template #toggleButton>
<button>A</button>
</template>
<template #modalContent="{ toggleModal }">
<div style="color: #fff; height: 400px; width: 400px;">test2 {{toggleModal}}</div>
<button @click="toggleModal = false">click me</button>
</template>
</PopoverModal>
Run Code Online (Sandbox Code Playgroud)
在弹出窗口组件中,我试图发送状态变量
<slot name="modalContent" :toggleModal="showSelector"></slot>
Run Code Online (Sandbox Code Playgroud)
我猜答案是不可能的,并找到另一种方法,但如果有人知道那就太好了,谢谢
您不能直接使用模板更改 PopoverModal 数据,但可以绑定一些 setter 方法。
一些示例代码:
HelloWorld.vue
<template>
<div class="hello">
<PopoverModal>
<template #toggleButton>
<button>A</button>
</template>
<template #modalContent="modelContent">
<div style="color: #fff; height: 400px; width: 400px;">test2 {{modelContent.toggleModal}}</div>
<button @click="modelContent.setToggleModal(false)">click me</button>
</template>
</PopoverModal>
</div>
</template>
<script>
import PopoverModal from './PopoverModal'
export default {
components: {PopoverModal},
name: 'HelloWorld',
data () {
return {
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
PopoverModal.vue
<template>
<div>
<slot name="toggleButton"></slot>
<slot name="modalContent" :toggleModal="showSelector" :setToggleModal="setShowSelector"></slot>
</div>
</template>
<script>
export default {
data () {
return {
showSelector: true
}
},
methods: {
setShowSelector(showSelector) {
this.showSelector = showSelector;
},
}
}
</script>
Run Code Online (Sandbox Code Playgroud)