单击下拉值后不会出现 v-chip 值,并且 chip close 不会关闭

v-chip values don't appear after clicking dropdown values and chip close doesn't close

我正在尝试获取 v-chips 的值,但我不知道我更改了什么 need.Also,芯片的 X(close) 也不起作用。用另一种方式编码会好吗?请帮忙,谢谢。

这是它的样子。

Values are not displayed above the dropdown

Values are not displayed and chip close doesn't work

这是 HelloWorld.vue

的代码

<template>
<div>
     <v-row>
                  <v-col
                    class="d-flex justify-center"
                    cols="6"
                  >
                    <div class="positionButton">
                      <v-btn
                        class="accent-3 blue"
                        dark
                      >
                        Add voice
                      </v-btn>
                    </div>
                  </v-col>
                  <v-col
                    class="d-flex justify-center"
                    cols="6"
                  >
                    <VideoPrueba
                      v-for="(step, key) in steps"
                      :key="key"
                      v-model="step.selected"
                      :items="step.options"
                    />
                  </v-col>
                </v-row>
                </div>
</template>

<script>
import VideoPrueba from './VideoPrueba'
  export default {
    name: 'HelloWorld',
    components:{VideoPrueba},
   
    data: () => ({
       steps: [
      {
        title: 'Videos',
        options: ['Video 1', 'Video 2', 'Video 3', 'Video 4'],
        selected: []
      }
    ],
   } )
  }
</script>

这是 Videoprueba.vue

的代码

<template>
  <div>
    <div>
            <span v-for="(el, i) in hey" :key="el.text" class="shrink">
                <v-chip :disabled="loading" close @click="del(el, i)">
                  <v-icon left v-text="el.icon"></v-icon>
                  {{ el.text }}
                </v-chip>
          </span>
    </div>


    <v-tooltip top>
      <template #activator="{on, attrs}">
        <div
          multiple
          v-on="on"
        >

    <v-select
                v-bind="attrs"

      v-model="hey"
      :items="items"
      label="Seleccion video"
      multiple
      return-object
    >



      <template v-slot:selection="{ item, index }">
        <v-chip v-if="hey.length=== 0">
          <span> Seleccion video</span>
        </v-chip>
        
      </template>
    </v-select>
      </div>
      </template>
      <span>Select videos here,please</span>
    </v-tooltip>

  </div>
</template>

<script>
export default {
  name: "VideoPrueba",

  props: {
    items: {
      type: [Array, Object],
      default: [],
    },
   
  },
  data: () => ({
    hey: "",
    model: {
      prop: "input",
      event: "change",
    },
    
    loading: false,
    selectedItems: [],
  }),
  watch: {
    hey(val){
      console.log('val',val)
      val.map((el, i) => {
        console.log('valor de selecteditems',this.selectedItems)
          console.log('valor de el',el)

        if (!this.selectedItems.includes(el)) {
          console.log('incluido')
          this.selectedItems.push(el);
        } else {
          console.log(el,i)
          //this.selectedItems.push(el);
          this.selectedItems.slice(el, 1);
        }
      });
    }
  },
 
  methods: { 
    del(el, i){      
      console.log(el)
       console.log(i)
       this.selectedItems.splice(i, 1)
    }
  },
  
};
</script>

那是因为:

  1. 你的“嘿”数据是一个字符串数组而不是对象。 “嘿”不是一个 属性 为“.text”的对象。

  2. 您省略了关闭芯片的 :close 事件 - 参考:https://vuetifyjs.com/en/api/v-chip/#events-click:close

这是您需要的两个修复程序

<v-chip :disabled="loading" close @click:close="del(el, i)">
  <v-icon left v-text="el.icon"></v-icon>
  {{ el }}
</v-chip>

干杯