vue使用vue-draggable的全過(guò)程
Vue-draggable是一個(gè)基于Vue.js的可拖拽組件庫(kù),可以方便地實(shí)現(xiàn)拖拽排序、拖拽交換等功能。
安裝
首先需要安裝vue-draggable組件庫(kù)。
可以通過(guò)npm進(jìn)行安裝:
npm install vuedraggable --save
使用
1.引入組件
在vue組件中引入vuedraggable組件:
import draggable from 'vuedraggable'
2.注冊(cè)組件
在vue組件中注冊(cè)draggable組件:
export default { components: { draggable } }
3.使用組件
在vue模板中使用draggable組件:
<draggable v-model="list" :options="dragOptions"> <div v-for="item in list" :key="item.id">{{ item.name }}</div> </draggable>
參數(shù)配置
在使用draggable組件時(shí),可以傳遞一些參數(shù)進(jìn)行配置。
下面是一些常用的參數(shù):
1.v-model
v-model用于綁定數(shù)據(jù),它綁定的是一個(gè)數(shù)組,這個(gè)數(shù)組就是我們需要排序的數(shù)據(jù)。
例如:
data () { return { list: [ {id: 1, name: 'item1'}, {id: 2, name: 'item2'}, {id: 3, name: 'item3'} ] } }
2.options
options是一個(gè)對(duì)象,用于配置draggable組件的行為。
下面是一些常用的配置:
dragOptions: { animation: 200, // 動(dòng)畫(huà)時(shí)間,單位毫秒 group: 'items', // 分組,同一分組內(nèi)的元素可以互相拖拽 disabled: false, // 是否禁用拖拽功能 ghostClass: 'ghost', // 拖拽過(guò)程中占位元素的class名稱 handle: '.handle', // 拖拽手柄,只有拖拽手柄內(nèi)的元素才能被拖拽 sort: true, // 是否啟用排序功能 draggable: '.item', // 可拖拽元素的選擇器 filter: '.ignore' // 不可拖拽元素的選擇器 }
3.events
draggable組件還提供了一些事件,可以在事件回調(diào)函數(shù)中處理一些邏輯。
下面是一些常用的事件:
methods: { onEnd (evt) { // 拖拽結(jié)束時(shí)觸發(fā) console.log('onEnd', evt) }, onMove (evt) { // 拖拽過(guò)程中觸發(fā) console.log('onMove', evt) }, onStart (evt) { // 開(kāi)始拖拽時(shí)觸發(fā) console.log('onStart', evt) } }
完整示例
下面是一個(gè)完整的示例:
<template> <div> <h1>Vue Draggable Example</h1> <draggable v-model="list" :options="dragOptions" @end="onEnd" @move="onMove" @start="onStart"> <div v-for="item in list" :key="item.id" class="item"> <span class="handle">?</span>{{ item.name }} </div> </draggable> </div> </template>
<script> import draggable from 'vuedraggable' export default { components: { draggable }, data () { return { list: [ {id: 1, name: 'item1'}, {id: 2, name: 'item2'}, {id: 3, name: 'item3'} ], dragOptions: { animation: 200, group: 'items', disabled: false, ghostClass: 'ghost', handle: '.handle', sort: true, draggable: '.item', filter: '.ignore' } } }, methods: { onEnd (evt) { console.log('onEnd', evt) }, onMove (evt) { console.log('onMove', evt) }, onStart (evt) { console.log('onStart', evt) } } } </script>
<style> .ghost { opacity: 0.5; background-color: #ccc; } .handle { cursor: move; user-select: none; } .ignore { pointer-events: none; } </style>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue組件傳值過(guò)程中丟失數(shù)據(jù)的分析與解決方案
這篇文章主要給大家介紹了關(guān)于Vue組件傳值過(guò)程中丟失數(shù)據(jù)的分析與解決方案,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Vue+Three加載glb文件報(bào)錯(cuò)問(wèn)題及解決
當(dāng)使用Three.js加載GLB模型時(shí),遇到加載錯(cuò)誤常常是路徑問(wèn)題,解決方案:1. 將GLB模型文件置于public目錄,避免打包時(shí)路徑編碼變化;2. 從node_modules的three庫(kù)中復(fù)制draco解碼器至public目錄;3. 確認(rèn)場(chǎng)景、攝像機(jī)和光源設(shè)置正確2024-10-10vue出現(xiàn)Uncaught SyntaxError:Unexpected token問(wèn)題及解決
這篇文章主要介紹了vue出現(xiàn)Uncaught SyntaxError:Unexpected token問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04vue使用pdfjs-dist+fabric實(shí)現(xiàn)pdf電子簽章的思路詳解
最近領(lǐng)導(dǎo)提了一個(gè)新需求:仿照e簽寶,實(shí)現(xiàn)pdf電子簽章,本文給大家介紹vue使用pdfjs-dist+fabric實(shí)現(xiàn)pdf電子簽章的思路,感興趣的朋友一起看看吧2023-12-12解決vue中修改了數(shù)據(jù)但視圖無(wú)法更新的情況
今天小編就為大家分享一篇解決vue中修改了數(shù)據(jù)但視圖無(wú)法更新的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08vue 實(shí)現(xiàn)路由跳轉(zhuǎn)時(shí)更改頁(yè)面title
今天小編就為大家分享一篇vue 實(shí)現(xiàn)路由跳轉(zhuǎn)時(shí)更改頁(yè)面title,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vue+axios實(shí)現(xiàn)post文件下載
這篇文章主要為大家詳細(xì)介紹了vue+axios實(shí)現(xiàn)post文件下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09