我在我的Vue 3应用程序中使用了Vutify 3中的VSelect,我正在try 使用Item Slot.但我的VSelect选项变得不可选

我有这个VSelect元素:

 <v-select
    v-model="tag"
    :items="tags"
    variant="solo"
    label="Tags" >
    <template #item="{ item }" >
      <v-list >
        <v-list-item :title="item.title" />
      </v-list>
    </template>
  </v-select>

标签和数据中的标签:

  tag: null,
  tags: [
    { title: 'example1', value: 0 },
    { title: 'example2', value: 1 },
  ],

在输出中,我有这个SELECT WITH OPTIONS,但选项是不可拾取的:

output

那么,我如何使用可选选项在Vutify 3中将插槽"Item"设置为VSelect Component?

推荐答案

传递给槽的props对象包含一个onClick回调,您需要绑定它才能使 Select 起作用:

      <template #item="{ item, props: {onClick, title, value} }" >
          <v-list-item :title="item.title" @click="onClick"/>
      </template>

当使用v-list-item时,简单地绑定props就足够了:

      <template #item="{ props }" >
          <v-list-item v-bind="props"/>
      </template>

请注意,#item槽已经将其内容呈现为v-list,不需要再次包装它.

以下是它的一个片段:

const { createApp, ref } = Vue;
const { createVuetify } = Vuetify
const vuetify = createVuetify()
createApp({
  setup(){
    
    return {
       tag: ref(null),
        tags: [
          { title: 'example1', value: 0 },
          { title: 'example2', value: 1 },
        ],
    }
  }
}).use(vuetify).mount('#app')
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/vuetify@3.1.6/dist/vuetify.min.css" />
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<div id="app" class="d-flex justify-center">
  <v-app>
    <div>
    <v-select
      style="width: 300px;"
      v-model="tag"
      :items="tags"
      variant="solo"
      label="Tags"
    >
      <template #item="{ item, props: {onClick, title, value} }" >
        <v-list-item :title="item.title"  @click="onClick"/>
      </template>
    </v-select>
      
      Selected: {{tag}}
    </div>
  </v-app>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@3.1.6/dist/vuetify.min.js"></script>

Vue.js相关问答推荐

可组合数据获取示例

在 Nuxt3 中使用 Vue3 vue-ganntastic 插件

如何在Vue3中使用vuechartjs 5.2从父组件更新图表

vuex 未知动作类型:addTodo

在 vue.js 中添加新类时样式不适用

如何将字符串中的
解析为 VUE.js 中的 html 标记

webpack vue-loader 配置

vue 模板中无法识别 pug 语言

Vue动态mapGetters

Vue.js 开发工具未显示

Vue:从 Vue 实例更新组件数据

Modal 内部的 Vue.js AJAX 调用

取消选中单选按钮

Vue 动态组件事件绑定

为什么 v-model 不适用于数组和 v-for 循环?

使用 Vue 在单个文件组件中调用渲染方法

单击时交换组件

错误:找不到模块'@vue/babel-preset-app'

laravel vuejs/axios put request Formdata 为空

检测 Vue-Router 导航Guards中的后退按钮