首頁  >  文章  >  web前端  >  如何使用Vue和Element-UI實現拖曳排序功能

如何使用Vue和Element-UI實現拖曳排序功能

WBOY
WBOY原創
2023-07-22 16:12:252855瀏覽

如何使用Vue和Element-UI實現拖曳排序功能

前言:
在Web開發中,拖曳排序功能是一項常見且實用的功能。本文將介紹如何使用Vue和Element-UI來實現拖曳排序功能,透過程式碼範例示範實作過程。

一、環境建置

  1. 安裝Node.js
    在開始之前,需要先安裝Node.js。可以存取https://nodejs.org/下載並安裝對應作業系統的版本。
  2. 安裝Vue CLI
    Vue CLI是用來快速建置Vue專案的工具。開啟命令列工具,執行下列指令安裝Vue CLI:

npm install -g @vue/cli

  1. 建立Vue專案
    在命令列中執行以下指令建立一個新的Vue專案:

vue create drag-sort-demo

依照提示選擇設定選項並等待專案建立完成。

  1. 安裝Element-UI
    進入剛剛建立的Vue專案目錄,在命令列中執行以下命令安裝Element-UI:

npm install element-ui

二、實作拖曳排序功能

  1. 匯入Element-UI
    在Vue專案的入口檔案src/main.js中匯入Element-UI的樣式和元件:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

  1. 建立示範元件
    在src/components目錄下建立一個新的元件DragSortDemo.vue,用於示範拖曳排序功能。編輯DragSortDemo.vue文件,加入以下程式碼:

d477f9ce7bf77f53fbcf36bec1b69b7a
dc6dce4a544fdca2df29d5ac0ea9906b

<div class="drag-sort-demo">
  <el-collapse-transition>
    <div v-for="item in list" :key="item.id" class="drag-item" :class="{ 'dragging': draggingId === item.id }" draggable="true" @dragstart="handleDragStart(item)" @dragend="handleDragEnd(item)">
      {{ item.name }}
    </div>
  </el-collapse-transition>
</div>
<el-button type="primary" @click="handleSort">保存排序</el-button>

16b28748ea4df4d9c2150843fecfba68
21c97d3a051048b8e55e3c8f199a54b2

3f1c4e4b6b16bbbd69b2ee476dc4f83a
export default {
data() {

return {
  list: [
    { id: 1, name: 'A' },
    { id: 2, name: 'B' },
    { id: 3, name: 'C' },
    { id: 4, name: 'D' },
    { id: 5, name: 'E' },
  ],
  draggingId: null,
};

},
methods: {

handleDragStart(item) {
  this.draggingId = item.id;
},
handleDragEnd() {
  this.draggingId = null;
},
handleSort() {
  const sortedList = Array.from(this.$el.querySelectorAll('.drag-item')).map((el, index) => {
    const id = el.getAttribute('data-id');
    const name = el.textContent;
    return { id, name, sort: index + 1 };
  });
  // 将排序后的列表保存到数据库或发送给后端
},

},
};
2cacc6d41bbb37262a98f745aa00fbf0

30e8033e360bcffb1ce9b4703e10b64c
.drag-sort-demo {
display: flex;
flex-wrap: wrap;
}

.drag-item {
padding: 10px;
margin: 10px 0;
background-color: #f5f5f5;
border: 1px solid #ebebeb;
cursor: move;
transition: box-shadow 0.3s;
}

.drag-item.dragging {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
531ac245ce3e4fe3d50054a55f265927

解釋:

  • 在範本中,使用v-for指令動態渲染清單項目。列表項的class綁定一個計算屬性,用來判斷目前拖曳的項是否為該列表項。
  • 為每個清單項目新增draggable屬性,並註冊dragstart和dragend事件處理函數,分別觸發拖曳開始和結束事件。
  • handleSort方法將拖曳排序後的清單資料儲存或傳送給後端處理。
  1. 使用元件
    在src/App.vue檔案中使用DragSortDemo元件:

d477f9ce7bf77f53fbcf36bec1b69b7a
e0a127155eaad306e6803a1b3b80da90

<drag-sort-demo></drag-sort-demo>

16b28748ea4df4d9c2150843fecfba68
21c97d3a051048b8e55e3c8f199a54b2

3f1c4e4b6b16bbbd69b2ee476dc4f83a
import DragSortDemo from './components/DragSortDemo.vue' ;

export default {
components: {

DragSortDemo,

},
};
2cacc6d41bbb37262a98f745aa00fbf0

三、執行專案
在命令列中執行下列指令啟動項目:

npm run serve

造訪http://localhost:8080即可看到拖曳排序功能的示範頁面。拖曳清單項目即可改變排序,並點選儲存排序按鈕將排序結果儲存。

結語:
透過上述步驟,我們成功地使用Vue和Element-UI實作了拖曳排序功能。這為我們的Web開發提供了一個簡單而實用的方案,能夠提升使用者體驗並優化介面互動。希望本文能對大家的前端開發工作有幫助。

以上是如何使用Vue和Element-UI實現拖曳排序功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn