Maison  >  Article  >  interface Web  >  Comment utiliser vue et Element-plus pour implémenter les fonctions de glisser-déposer et de tri

Comment utiliser vue et Element-plus pour implémenter les fonctions de glisser-déposer et de tri

王林
王林original
2023-07-17 21:02:032654parcourir

Comment utiliser vue et Element-plus pour implémenter des fonctions de glisser-déposer et de tri

Introduction :
Dans le développement Web moderne, l'expérience d'interaction utilisateur devient de plus en plus importante. Les fonctions de glisser-déposer et de tri sont des opérations interactives courantes qui permettent aux utilisateurs de réorganiser facilement les éléments ou d'ajuster la position des éléments. Cet article expliquera comment utiliser les bibliothèques Vue et Element-plus pour implémenter des fonctions de glisser-déposer et de tri, et fournira des exemples de code correspondants.

Préparation technique :
Afin de commencer à écrire du code lié à Vue et Element-plus, nous devons d'abord préparer certains outils et environnements. Tout d’abord, assurez-vous que Node.js et Vue CLI sont installés. Ensuite, exécutez la commande suivante dans la ligne de commande pour créer un nouveau projet Vue :

vue create drag-and-sort-demo

Sélectionnez la configuration par défaut en fonction des invites ou configurez-la selon vos propres besoins. Ensuite, installez la bibliothèque Element-plus :

cd drag-and-sort-demo
npm install element-plus

Une fois que tout est prêt, nous commençons à écrire du code.

Implémenter la fonction glisser-déposer :
Tout d'abord, nous devons introduire la bibliothèque Element-plus dans le composant Vue et enregistrer les composants qui doivent être utilisés :

<template>
  <div>
    <el-col :span="12">
      <el-card>
        <el-button type="success" icon="el-icon-plus" @click="addElement">
          Add Element
        </el-button>
        <el-draggable v-model="list">
          <template #item="{ element }">
            <el-card :header="element.title" shadow="hover">
              {{ element.content }}
            </el-card>
          </template>
        </el-draggable>
      </el-card>
    </el-col>
  </div>
</template>

<script>
import { ElButton, ElCard, ElCol, ElDraggable } from "element-plus";

export default {
  components: {
    ElButton,
    ElCard,
    ElCol,
    ElDraggable,
  },
  data() {
    return {
      list: [
        { title: "Card 1", content: "This is card 1" },
        { title: "Card 2", content: "This is card 2" },
        { title: "Card 3", content: "This is card 3" },
      ],
    };
  },
  methods: {
    addElement() {
      this.list.push({ title: "New Card", content: "This is a new card" });
    },
  },
};
</script>

Dans le code ci-dessus, nous utilisons el-draggable Composant pour implémenter la fonctionnalité glisser-déposer. La directive v-model lie un tableau nommé list, qui stocke tous les éléments de la carte. En cliquant sur le bouton "Ajouter un élément", vous pouvez ajouter dynamiquement de nouveaux éléments de carte au tableau list. La balise template est utilisée à l'intérieur de el-draggable pour définir le style et le contenu de chaque élément de la carte. el-draggable组件来实现拖拽功能。v-model指令绑定了一个名为list的数组,该数组存储了所有的卡片元素。通过点击"Add Element"按钮,可以向list数组中动态添加新的卡片元素。在el-draggable内部使用了template标签来定义每个卡片元素的样式和内容。

接下来,我们来实现排序功能。

实现排序功能:
为了实现排序功能,我们需要使用el-draggable组件的@change事件以及相应的排序算法。下面是我们修改后的代码:

<template>
  <div>
    <el-col :span="12">
      <el-card>
        <el-button type="success" icon="el-icon-plus" @click="addElement">
          Add Element
        </el-button>
        <el-draggable v-model="list" @change="handleSort">
          <template #item="{ element }">
            <el-card :header="element.title" shadow="hover">
              {{ element.content }}
            </el-card>
          </template>
        </el-draggable>
      </el-card>
    </el-col>
  </div>
</template>

<script>
import { ElButton, ElCard, ElCol, ElDraggable } from "element-plus";

export default {
  components: {
    ElButton,
    ElCard,
    ElCol,
    ElDraggable,
  },
  data() {
    return {
      list: [
        { title: "Card 1", content: "This is card 1" },
        { title: "Card 2", content: "This is card 2" },
        { title: "Card 3", content: "This is card 3" },
      ],
    };
  },
  methods: {
    addElement() {
      this.list.push({ title: "New Card", content: "This is a new card" });
    },
    handleSort(event) {
      const { newIndex, oldIndex } = event;
      const movedElement = this.list.splice(oldIndex, 1)[0];
      this.list.splice(newIndex, 0, movedElement);
    },
  },
};
</script>

在上述代码中,我们添加了一个名为handleSort的方法,该方法会在拖拽完成后被调用。通过提取@change事件中的newIndexoldIndex,我们可以获取被拖拽的卡片元素在数组中的新位置和旧位置,并通过数组的splice方法实现排序。

总结:
本文介绍了如何使用Vue和Element-plus实现拖拽和排序功能。通过el-draggable

Ensuite, implémentons la fonction de tri. 🎜🎜Implémenter la fonction de tri : 🎜Afin d'implémenter la fonction de tri, nous devons utiliser l'événement @change du composant el-draggable et l'algorithme de tri correspondant. Voici notre code modifié : 🎜rrreee🎜Dans le code ci-dessus, nous avons ajouté une méthode nommée handleSort, qui sera appelée une fois le glissement terminé. En extrayant newIndex et oldIndex dans l'événement @change, nous pouvons obtenir les nouvelles et anciennes positions de l'élément de carte glissé dans le tableau, et le tri est implémenté via la méthode splice du tableau. 🎜🎜Résumé : 🎜Cet article explique comment utiliser Vue et Element-plus pour implémenter des fonctions de glisser-déposer et de tri. Grâce au composant el-draggable et aux méthodes de gestion d'événements correspondantes, nous pouvons facilement implémenter des opérations de glisser et de tri. J'espère que cet article vous sera utile lors du développement d'applications Web à l'aide de Vue et Element-plus. 🎜

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!

Déclaration:
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