vue使用vuedraggable實現(xiàn)嵌套多層拖拽排序功能
本文實例為大家分享了vuedraggable實現(xiàn)嵌套多層拖拽排序功能的具體代碼,供大家參考,具體內(nèi)容如下
vue中實現(xiàn)嵌套多層拖拽功能。官網(wǎng)入口:
實現(xiàn)效果:(拖動左側(cè)調(diào)整一級的順序,拖動右側(cè)調(diào)整二級的順序)
實現(xiàn)步驟:
***這里使用了插件 vuedraggable
第一步:安裝插件
cnpm install vuedraggable --save
第二步:在頁面上引入插件并注冊
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">點我看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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue實現(xiàn)點擊關(guān)注后及時更新列表功能
這篇文章主要介紹了vue實現(xiàn)點擊關(guān)注后及時更新列表功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06element-plus 下拉框?qū)崿F(xiàn)全選的示例代碼
本文主要介紹了element-plus 下拉框?qū)崿F(xiàn)全選的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05axios全局請求參數(shù)設置,請求及返回攔截器的方法
下面小編就為大家分享一篇axios全局請求參數(shù)設置,請求及返回攔截器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03element-plus報錯ResizeObserver?loop?limit?exceeded解決辦法
這篇文章主要給大家介紹了關(guān)于element-plus報錯ResizeObserver?loop?limit?exceeded的解決辦法,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07antd-DatePicker組件獲取時間值,及相關(guān)設置方式
這篇文章主要介紹了antd-DatePicker組件獲取時間值,及相關(guān)設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10