vue.js - 选择项目时的Vue - >父和子弹出框关闭但只有子应关闭
问题描述
所以在设置中我们得到了 3 个选择组件。字体、文本大小和主题如图所示。当我选择一种字体或其他东西时,父弹出框也会关闭。我只希望这个示例字体中的孩子关闭。否则,我必须单击“设置”才能打开父弹出窗口。\n
Settings.vue(父):
<template>
<v-popover placement="left-start">
<button-ui icon>
<fa icon="cog" size="lg"/>
</button-ui>
<template slot="popover">
<card-ui>
<list-ui>
<switch-ui
class="mr-6" :value="settings.autoSave"
@change="updateSetting('autoSave', $event)"></switch-ui>
<p>Auto Save</p>
</list-ui>
<list-ui>
<switch-ui class="mr-6" :value="settings.syncScroll"
@change="updateSetting('syncScroll', $event)"></switch-ui>
<p>Sync Scroll</p>
</list-ui>
<list-ui>
<span class="mr-6">Font :</span><span class="mr-1"></span>
<select-ui class="ml-6" :value="settings.font"
:list="optionFont" @input="updateSetting('font', $event)"/>
</list-ui>
<list-ui>
<span class="mr-6">Textsize :</span>
<select-ui :value="settings.size" :list="optionSize" @input="updateSetting('size', $event)"/>
</list-ui>
<list-ui>
<span class="mr-6">Theme :</span><span class="mr-2"></span>
<select-ui :value="settings.theme" :list="optionTheme" @input="updateSetting('theme', $event)"/>
</list-ui>
</card-ui>
</template>
</v-popover>
</template>
<script>
export default {
data() {
return {
optionFont: ['Arial', 'Helvetica', 'Verdana', 'Calibri', 'Gill Sans', 'Consolas'],
optionSize: ['8', '10', '12', '14', '16', '18', '20', '24'],
optionTheme: [
'default', '3024-night', 'ayu-dark', 'base16-light', 'blackboard', 'darcula', 'dracula', 'duotone-dark',
'duotone-light', 'gruvbox-dark',
],
};
},
computed: {
settings() {
return this.$store.state.settings;
},
},
methods: {
updateSetting(key, value) {
this.$store.commit('settings/update', {
key,
value,
});
console.log(key, value);
},
mounted() {
const recaptchaScript = document.createElement('script');
recaptchaScript.setAttribute('src', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js');
document.head.appendChild(recaptchaScript);
},
},
};
</script>
选择.vue(子):
<template>
<v-popover placement="bottom" offset="10">
<div class="select-ui" tabindex="0" :class="{ block }">
<div class="select-ui--inner">
<slot name="selected" :value="value">
<p class="text-overflow text">{{ value }}</p>
</slot>
<fa icon="chevron-down"></fa>
</div>
</div>
<card-ui slot="popover" class="shadow-xl border select-ui--content">
<p class="font-semibold" slot="header" v-if="!!title">{{ title }}</p>
<div
class="select-ui--item"
v-for="item in list"
:key="item"
@change="$emit('change', item)"
@click="$emit('input', item)"
v-close-popover>
<slot name="option" :value="item">{{ item }}</slot>
</div>
</card-ui>
</v-popover>
</template>
<script>
import '~/assets/scss/components/_select.scss';
export default {
name: 'select-ui',
props: {
value: [String, Number],
list: Array,
block: Boolean,
title: String,
},
};
</script>
解决方案
您可以在打开孩子时在父母上设置autoHide
道具v-popover
false
v-popover
推荐阅读
- spring - spring mvc:当控制器的返回类型为CompletableFuture时如何设置请求超时?
- r - 为什么 rbind 在 R 的函数循环中不起作用
- google-cloud-platform - 如何为非工程师成员添加 GCS 存储桶的读取权限?
- java - 当 ManyToOne 与 OneToMany 直通关系表一起使用时,持续不工作
- matlab - 如何在不使用 for 循环的情况下计算图像中像素强度的出现次数?
- jenkins - Jenkins Permission Denied on shell 执行
- ios - 显示名称/描述 - 应用内购买已退回
- sql-server - 根据数据库中保存的经度和纬度显示附近的地方。angular6 + sql服务器
- php - 随机选择记录,与先前选择的记录不同
- kubernetes - io.k8s.api.core.v1.PersistentVolumeClaim 中的未知字段“存储”