You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt-UI:嵌套模态框中Select Menu组件无法正常工作

Nuxt-UI select-menu组件在嵌套模态框中无法正常工作

我在使用Nuxt-UI的select-menu组件时遇到问题——将它置于嵌套模态框中时,无法按预期运行。我已创建演示示例用于复现该问题。

以下是Sample.vue的代码示例:

<script setup lang="ts">
import { ref } from 'vue'

const people = [
  { label: 'Wade Cooper', value: 'Wade Cooper' },
  { label: 'Arlene Mccoy', value: 'Arlene Mccoy' },
  { label: 'Devon Webb', value: 'Devon Webb' },
  { label: 'Tom Cook', value: 'Tom Cook' },
  { label: 'Tanya Fox', value: 'Tanya Fox' },
  { label: 'Hellen Schmidt', value: 'Hellen Schmidt' },
  { label: 'Caroline Schultz', value: 'Caroline Schultz' },
  { label: 'Mason Heaney', value: 'Mason Heaney' },
  { label: 'Claudie Smitham', value: 'Claudie Smitham' },
  { label: 'Emil Schaefer', value: 'Emil Schaefer' }
]

const selectedMain = ref(people[0])
const selectedFirstModal = ref(people[0])
const selectedSecondModal = ref(people[0])
const openFirstModal = ref(false)
const openSecondModal = ref(false)
</script>

<template>
  <div class="flex flex-col items-center p-8 space-y-8">
    <!-- Main Select Menu -->
    <div class="w-80">
      <h2 class="text-lg font-semibold mb-2">Main Select Menu</h2>
      <u-select-menu v-model="selectedMain" :options="people" placeholder="Select a person" />
    </div>

    <!-- Trigger for First Modal -->
    <u-button class="px-4 py-2 bg-blue-500 text-white rounded" @click="openFirstModal = true">
      Open First Modal
    </u-button>

    <!-- First Modal -->
    <u-modal v-model="openFirstModal"  :ui="{width: 'sm:max-w-5xl'}" :prevent-close="true">
      <template #title>
        <h3 class="text-xl font-semibold">First Modal</h3>
      </template>
      <template #default>
        <div class="space-y-4">
          <p class="text-gray-700">This is the first modal. You can open a nested modal from here.</p>
          
          <!-- Select Menu in First Modal -->
          <div class="w-80">
            <h4 class="text-lg font-medium mb-2">Select Menu in First Modal</h4>
            <u-select-menu v-model="selectedFirstModal" :options="people" placeholder="Select a person" />
          </div>

          <div class="flex space-x-4">
            <u-button @click="openSecondModal = true" class="px-4 py-2 bg-green-500 text-white rounded">
              Open Nested Modal
            </u-button>
            <u-button @click="openFirstModal = false" class="px-4 py-2 text-white underline">
              Close Modal
            </u-button>
          </div>
        </div>
      </template>
    </u-modal>

    <!-- Nested Second Modal -->
    <u-modal v-model="openSecondModal" :prevent-close="true">
      <template #title>
        <h3 class="text-xl font-semibold">Nested Modal</h3>
      </template>
      <template #default>
        <div class="space-y-4">
          <p class="text-gray-700">This is the nested modal with a separate select menu.</p>

          <!-- Select Menu in Nested Modal -->
          <div class="w-80">
            <h4 class="text-lg font-medium mb-2">Select Menu in Nested Modal</h4>
            <u-select-menu v-model="selectedSecondModal" :options="people" placeholder="Select a person" />
          </div>
          
          <u-button @click="openSecondModal = false" class="px-4 py-2 text-white underline">
            Close Nested Modal
          </u-button>
        </div>
      </template>
    </u-modal>
  </div>
</template>

内容的提问来源于stack exchange,提问作者rook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:10:56