Maison > interface Web > Voir.js > le corps du texte

Comment implémenter une liste déroulante à sélection multiple dans Vue

WBOY
Libérer: 2023-11-07 14:09:17
original
1980 Les gens l'ont consulté

Comment implémenter une liste déroulante à sélection multiple dans Vue

Comment implémenter une liste déroulante à sélection multiple dans Vue

Dans le développement de Vue, la liste déroulante est l'un des composants de formulaire courants. Normalement, nous utilisons des listes déroulantes radio pour sélectionner une option. Cependant, nous devons parfois implémenter une liste déroulante à sélection multiple afin que les utilisateurs puissent sélectionner plusieurs options en même temps. Dans cet article, nous présenterons comment implémenter une liste déroulante à sélection multiple dans Vue et fournirons des exemples de code spécifiques.

1. Utiliser la bibliothèque de composants Element UI
Element UI est une bibliothèque de composants de bureau basée sur Vue, qui fournit un riche ensemble de composants et d'outils d'interface utilisateur. Dans Element UI, il existe un composant appelé Select, qui peut être utilisé pour implémenter des listes déroulantes. Ce composant prend en charge le mode de sélection multiple, qui peut être activé en définissant l'attribut multiple sur true. Voici un exemple simple :

<el-select v-model="selectedOptions" multiple>
  <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option>
</el-select>
Copier après la connexion
data() {
  return {
    options: [
      { value: 'option1', label: '选项1' },
      { value: 'option2', label: '选项2' },
      { value: 'option3', label: '选项3' }
    ],
    selectedOptions: []
  };
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons la directive v-model pour lier un tableau selectedOptions pour stocker les options sélectionnées par l'utilisateur. En définissant l'attribut multiple sur true, la liste déroulante peut prendre en charge plusieurs sélections.

2. Composant de liste déroulante à sélection multiple personnalisé
En plus d'utiliser la bibliothèque de composants fournie par Element UI, nous pouvons également implémenter des listes déroulantes à sélection multiple en fonction de nos propres besoins. Voici un exemple de code pour un composant de liste déroulante à sélection multiple personnalisé :

<template>
  <div class="dropdown" @click="toggleDropdown">
    <div class="selected-options">
      <span v-if="selectedOptions.length === 0">请选择...</span>
      <span v-else>
        <span v-for="option in selectedOptions" :key="option.value">
          {{ option.label }}
          <span class="remove" @click.stop="removeOption(option)">&#10006;</span>
        </span>
      </span>
    </div>
    <div class="dropdown-list" v-show="showDropdown">
      <span v-for="option in options" :key="option.value" @click="toggleOption(option)">
        <input type="checkbox" :value="option.value" :checked="isChecked(option)">
        {{ option.label }}
      </span>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'option1', label: '选项1' },
        { value: 'option2', label: '选项2' },
        { value: 'option3', label: '选项3' }
      ],
      selectedOptions: [],
      showDropdown: false
    };
  },
  methods: {
    toggleDropdown() {
      this.showDropdown = !this.showDropdown;
    },
    toggleOption(option) {
      if (this.isSelected(option)) {
        this.removeOption(option);
      } else {
        this.addOption(option);
      }
    },
    isSelected(option) {
      return this.selectedOptions.some(selectedOption => selectedOption.value === option.value);
    },
    addOption(option) {
      if (!this.isSelected(option)) {
        this.selectedOptions.push(option);
      }
    },
    removeOption(option) {
      this.selectedOptions = this.selectedOptions.filter(selectedOption => selectedOption.value !== option.value);
    },
    isChecked(option) {
      return this.isSelected(option);
    }
  }
};
</script>

<style scoped>
.dropdown {
  position: relative;
  display: inline-block;
}
.selected-options {
  border: 1px solid #aaa;
  padding: 5px;
  cursor: pointer;
}
.dropdown-list {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid #aaa;
  background-color: #fff;
  padding: 5px;
}
.remove {
  margin-left: 5px;
  cursor: pointer;
}
</style>
Copier après la connexion

Dans le code ci-dessus, nous utilisons une variable selectedOptions pour stocker les options sélectionnées par l'utilisateur. Développez ou réduisez la liste déroulante en cliquant sur une partie du conteneur de la liste déroulante, basculez l'état sélectionné en cliquant sur chaque option et utilisez le tableau selectedOptions pour stocker les options sélectionnées. La méthode removeOption est utilisée pour supprimer des options et la méthode isChecked est utilisée pour déterminer si une option est sélectionnée. Ce composant peut être introduit et utilisé dans d'autres composants.

Résumé
Pour implémenter une liste déroulante à sélection multiple dans Vue, nous pouvons utiliser le composant Select fourni par Element UI et définir l'attribut multiple sur true. De plus, nous pouvons également personnaliser les composants pour implémenter des listes déroulantes à sélection multiple et les personnaliser en fonction de nos propres besoins. Les méthodes ci-dessus permettent d'implémenter des listes déroulantes à sélection multiple. J'espère qu'elles vous seront utiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal