vue使用vuedraggable實(shí)現(xiàn)嵌套多層拖拽排序功能
本文實(shí)例為大家分享了vuedraggable實(shí)現(xiàn)嵌套多層拖拽排序功能的具體代碼,供大家參考,具體內(nèi)容如下
vue中實(shí)現(xiàn)嵌套多層拖拽功能。官網(wǎng)入口:
實(shí)現(xiàn)效果:(拖動(dòng)左側(cè)調(diào)整一級(jí)的順序,拖動(dòng)右側(cè)調(diào)整二級(jí)的順序)



實(shí)現(xiàn)步驟:
***這里使用了插件 vuedraggable
第一步:安裝插件
cnpm install vuedraggable --save
第二步:在頁面上引入插件并注冊(cè)
import draggable from 'vuedraggable'
components: {
? ? draggable
? },第三步:頁面上使用
<template>
? <div class="wholeList">
? ? <draggable
? ? ? class="leftCon"
? ? ? :list="tolList"
? ? >
? ? ? <div class="leftConLi" v-for="element in tolList" :key="element.id">
? ? ? ? {{ element.name }}
? ? ? </div>
? ? </draggable>
? ? <ul class="oneUl">
? ? ? <li
? ? ? ? class="oneLi"
? ? ? ? v-for="(item,index) in tolList"
? ? ? ? :key="index"
? ? ? >
? ? ? ? <!--拖拽內(nèi)容部分-1-->
? ? ? ? <draggable
? ? ? ? ? v-if="index === 0"
? ? ? ? ? class="dragArea list-group"
? ? ? ? ? :list="item.children"
? ? ? ? ? :clone="clone"
? ? ? ? ? :group="{ name: 'people', pull: pullFunction }"
? ? ? ? ? @start="start"
? ? ? ? >
? ? ? ? ? <div v-for="element in item.children" :key="element.id" class="list-group-item">
? ? ? ? ? ? {{ element.name }}
? ? ? ? ? </div>
? ? ? ? </draggable>
? ? ? ? <!--拖拽內(nèi)容部分-其他-->
? ? ? ? <draggable
? ? ? ? ? v-else
? ? ? ? ? class="dragArea list-group"
? ? ? ? ? :list="item.children"
? ? ? ? ? :clone="clone"
? ? ? ? ? group="people"
? ? ? ? >
? ? ? ? ? <div v-for="element in item.children" :key="element.id" class="list-group-item">
? ? ? ? ? ? {{ element.name }}
? ? ? ? ? </div>
? ? ? ? </draggable>
? ? ? </li>
?
? ? </ul>
?
? ? <el-button @click="getNewList">點(diǎn)我看console里面的最新數(shù)據(jù)</el-button>
? </div>
</template>
?
<script>
import draggable from 'vuedraggable'
export default {
? components: {
? ? draggable
? },
? data() {
? ? return {
? ? ? tolList: [
? ? ? ? {
? ? ? ? ? name: '第一天',
? ? ? ? ? children: [
? ? ? ? ? ? {
? ? ? ? ? ? ? name: '11111', id: 1
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }, {
? ? ? ? ? name: '第二天',
? ? ? ? ? children: [
? ? ? ? ? ? {
? ? ? ? ? ? ? name: 'aaaaa', id: 11
? ? ? ? ? ? }, {
? ? ? ? ? ? ? name: 'bbbbbb', id: 12
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? name: '第三天',
? ? ? ? ? children: [
? ? ? ? ? ? {
? ? ? ? ? ? ? name: ',,,111,,', id: 21
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }
? ? ? ],
? ? ? controlOnStart: true
? ? }
? },
? methods: {
? ? clone({ name, id }) {
? ? ? return { name, id: id }
? ? },
? ? pullFunction() {
? ? ? return this.controlOnStart ? 'clone' : true
? ? },
? ? start({ originalEvent }) {
? ? ? this.controlOnStart = originalEvent.ctrlKey
? ? },
? ? getNewList() {
? ? ? let a = this.tolList
? ? ? console.log(a)
? ? }
? }
}
</script>
<style lang="scss" scoped>
? .wholeList{
? ? margin-top:200px;
? ? width:500px;
? ? display: flex;
? ? flex-wrap: wrap;
? ? .leftCon{
? ? ? width: 100px;
? ? ? .leftConLi{
? ? ? ? background: #42B974;
? ? ? ? line-height: 80px;
? ? ? ? margin-bottom:10px;
? ? ? }
? ? }
? ? .oneUl{
? ? ? width: calc(100% - 100px);
? ? ? .oneLi{
? ? ? ? display: flex;
? ? ? ? height: 80px;
? ? ? ? margin-bottom:10px;
? ? ? ? border:1px solid red;
? ? ? ? .dragArea{
? ? ? ? ? width: 100%;
? ? ? ? ? min-height: 30px;
? ? ? ? }
? ? ? }
?
? ? }
? }
</style>以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深度了解vue.js中hooks的相關(guān)知識(shí)
這篇文章主要介紹了深度了解vue.js中hooks的相關(guān)知識(shí),生命周期鉤子提供了一些 方法 ,因此你可以在組件生命周期的不同時(shí)刻精確地觸發(fā)某些操作。當(dāng)我們將組件實(shí)例化時(shí),組件會(huì)被創(chuàng)建,反之會(huì)被銷毀。,需要的朋友可以參考下2019-06-06
vue elementui簡易側(cè)拉欄的使用小結(jié)
這篇文章主要介紹了vue elementui簡易側(cè)拉欄的使用,增加了側(cè)拉欄,目的是可以選擇多條數(shù)據(jù)展示數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06
vue.js中v-on:textInput無法執(zhí)行事件問題的解決過程
大家都知道vue.js通過v-on完成事件處理與綁定,但最近使用v-on的時(shí)候遇到了一個(gè)問題,所以下面這篇文章主要給大家介紹了關(guān)于vue.js中v-on:textInput無法執(zhí)行事件問題的解決過程,需要的朋友可以參考下。2017-07-07

