使用vuedraggable拖拽排序

,參考文檔:vuedraggable,?Vue.Draggable學(xué)習(xí)總結(jié)

使用插件?vuedraggable

###一級排序

1. 使用npm 安裝插件vuedraggable

npm?i?-S?vuedraggable

2. srcipt中導(dǎo)入vuedraggable,且聲明組件

導(dǎo)入 import?draggable?from?'vuedraggable'

聲明 components:?{?draggable?},



3. 定義list,list內(nèi)對象結(jié)構(gòu)可隨意定制

list: [{name: 11111111111111111111}, {name: 22222222222222222}, {name: 333333333333333333333}, {name: 4444444444444444444},?{name: 55555555555555555555555},?{name: 6666666666666666}]

4. 在temlate輸出

<draggable?v-model="sort">

??????????<div?class="item"?v-for="(vo,?idx)?in?sort"?:key="idx">{{vo.name}}</div>

</draggable>

5. 添加個button,獲取list的值

<div?class="bar">

????????<Button?type="primary"?@click="sure">確定</Button>

??????</div>


?sure?()?{

?????console.log(this.list)

}

### 多級排序

vuedraggable 可以多級鑲嵌的來達到多級拖拽排序的目的

1. 把list的結(jié)構(gòu)改一下

list:?[

????????{

??????????name:?'1.一級菜單',

??????????children:?[

????????????{

??????????????name:?'二級菜單',

??????????????children:?[

????????????????{

??????????????????name:?'三級菜單'

????????????????},

????????????????{

??????????????????name:?'',

??????????????????emptyHolder:?true

????????????????}

??????????????]

????????????},

????????????{

??????????????name:?'',

??????????????emptyHolder:?true

????????????}

??????????],

????????},

????????{

??????????name:?'2.一級菜單',

??????????children:?[

????????????{

??????????????name:?'二級菜單',

??????????????children:?[

????????????????{

??????????????????name:?'三級菜單'

????????????????},

????????????????{

??????????????????name:?'',

??????????????????emptyHolder:?true

????????????????}

??????????????]

????????????},

????????????{

??????????????name:?'',

??????????????emptyHolder:?true

????????????}

??????????],

????????}

??????]


2. 用vuedraggable ,寫一個組件,方便循環(huán)嵌套

<template>

??<div?v-if="menu?&&?menu.length>0">

????<draggable

??????class="dragArea"

??????tag="div"

??????v-bind="dragOptions"

??????:list="menu"

????>

??????<template?v-for="(vo,index)?in?menu">

????????<div

??????????draggable=".item"

??????????class="list-group-item"

??????????:class="{?'nested-1':?lev?==?1,'nested-2':?lev?!=?1,}"

??????????v-if="!vo.emptyHolder"

??????????:key="index">

??????????<p>{{?vo.name?}}</p>

??????????<next?v-if="lev?<?3"?:menu="vo.children?||?[]"?:lev="lev+1"></next>

????????</div>

??????</template>

????</draggable>

??</div>

</template>

<script>

import?draggable?from?"vuedraggable"

export?default?{

??name:?"next",

??components:?{

????draggable

??},

??computed:?{

????dragOptions()?{

??????return?{

????????group:?"nested",

????????ghostClass:?"ghost",

????????animation:?150,

????????fallbackOnBody:?true,

????????swapThreshold:?0.65

??????}

????}

??},

??props:?{

????menu:?{

??????required:?true,

??????type:?Array

????},

????lev:?{

??????type:?Number,

??????default:?1

????}

??},

??mounted?()?{

??},

??methods:?{}

};

</script>


3.在頁面中調(diào)用nest組件

import?next?from?"./nest";

??components:?{?draggable,?next?},


????<next?:menu="menu"?:lev="1"?/>


例子代碼:例子(密碼:87qv)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容