vue2.0使用Sortable.js實現(xiàn)的拖拽功能示例
簡介
在使用vue1.x之前的版本的時候,頁面中的拖拽功能,我在項目中是直接用的jquery ui中的sortable.js,只是在拖拽完成后,在update的回調(diào)函數(shù)中又重新排序了存放數(shù)據(jù)的數(shù)組。但是當(dāng)把vue升級到2.0以上后發(fā)現(xiàn)拖拽功能失效了,于是使用了下面代碼。
該案例主要是在用于vuejs2.0中實現(xiàn)的拖拽功能,用到的的js有Sortable.js,vuedraggable.js,當(dāng)然還有vue.min.js,提供的案例使用的require.js加載。
實現(xiàn)效果
實現(xiàn)后的效果如圖所示:

html主要代碼
<draggable :list="list2" :move="getdata" @update="datadragEnd" :options="{animation: 300,handle:'.dargDiv'}">
<transition-group name="list-complete" >
<div v-for="element in list2" :key="element.it.name" class="list-complete-item">
<div class="styleclass dargDiv">{{element.id}}</div>
<div class="styleclass">{{element.it.name}}</div>
</div>
</transition-group>
</draggable>
css代碼
body{
font-family:'微軟雅黑'
}
[v-cloak]{
display:none;
}
#example{
width:1000px;
margin:0 auto;
}
.list-complete-item {
transition: all 1s;
height:50px;
line-height: 50px;
background: #000;
color:#fff;
text-align: center;
font-size:24px;
margin-top:10px;
}
.styleclass{
width:100px;
float:left;
}
.list-complete-enter, .list-complete-leave-active {
opacity: 0;
height: 0px;
margin-top: 0px;
padding: 0px;
border: solid 0px;
}
.list-complete-sortable-chosen,.list-complete-sortable-ghost{
opacity: 0;
height: 0px;
margin-top: 0px;
padding: 0px;
border: solid 0px;
}
.dargDiv{
cursor:move;
background:red;
}
.wrods{
margin-top:50px;
}
p{
line-height:24px;
text-align:center;
}
js代碼
require.config({
urlArgs: "ver=1.0_0",
paths:{
"vue":'vue.min2',
"sortablejs":'Sortable',
"vuedraggable":'vuedraggable'
},
shim:{
'vue':{
exports:'vue'
}
}
}),
require(['vue','vuedraggable'],function(Vue,draggable){
Vue.component('draggable', draggable);
new Vue({
el: '#example',
data: {
list2:[
{id:"id1",it:{name:'bbbb'}},
{id:"id2",it:{name:'2222'}},
{id:"id3",it:{name:'3333'}},
{id:"id4",it:{name:'4444'}}
]
},
methods:{
getdata: function(evt){
console.log(evt.draggedContext.element.id);
},
datadragEnd:function(evt){
console.log('拖動前的索引:'+evt.oldIndex);
console.log('拖動后的索引:'+evt.newIndex);
}
}
})
})
里面的可配置的很多細節(jié)請參考參考地址,這里不做詳細介紹。
可下載案例地址:Vue.Draggable-case_jb51.rar
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Element Cascader 級聯(lián)選擇器的使用示例
這篇文章主要介紹了Element Cascader 級聯(lián)選擇器的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
vue+elementui 實現(xiàn)上傳文件/導(dǎo)入文件的功能示例詳解
文章介紹了如何使用Vue和Element UI實現(xiàn)上傳文件和導(dǎo)入文件的功能,主要內(nèi)容包括:上傳組件的使用、data中的數(shù)據(jù)存儲、methods中的方法(選擇文件、點擊確定上傳文件、刪除文件),文章還提供了相關(guān)鏈接供進一步學(xué)習(xí),感興趣的朋友一起看看吧2025-03-03

