使用 CDN:
已經可以拖曳了,是不是很簡單?並且 list 的資料也都會及時變更!並且因為雙向綁定,若資料更新則畫面也會同步更新。
參考資料:
Github - SortableJS/Vue.Draggable
官方範例
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
<!-- CDNJS :: Sortable (https://cdnjs.com/) -->
<script src="//cdn.jsdelivr.net/npm/sortablejs@1.8.4/Sortable.min.js"></script>
<!-- CDNJS :: Vue.Draggable (https://cdnjs.com/) -->
<script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.20.0/vuedraggable.umd.min.js"></script>
最簡單 Array 資料拖拉
drag: 設定是否可以移動
<div id="app">
<draggable v-model="list" group="myItem" @start="drag=true" @end="drag=false">
<button v-for="element in list" :key="element.id">{{ element.name }}</button>
</draggable>
</div>
const app = new Vue({
el: '#app',
data: {
list: [
{id: 1, name: 'Item 1'},
{id: 2, name: 'Item 2'},
{id: 3, name: 'Item 3'},
],
drag: true,
},
});
已經可以拖曳了,是不是很簡單?並且 list 的資料也都會及時變更!並且因為雙向綁定,若資料更新則畫面也會同步更新。
兩組 Array 資料拖拉
如果有兩個清單的資料要交互移動,則只要設定相同的 group 即可在兩個 Array 間移動資料
<div id="app">
<draggable v-model="list" group="myItem" @start="drag=true" @end="drag=false">
<button v-for="element in list" :key="element.id">{{ element.name }}</button>
</draggable>
<div style="height: 50px"></div>
<draggable v-model="list2" group="myItem" @start="drag=true" @end="drag=false">
<button v-for="element in list2" :key="element.id">{{ element.name }}</button>
</draggable>
</div>
const app = new Vue({
el: '#app',
data: {
list: [
{id: 1, name: 'Item 1'},
{id: 2, name: 'Item 2'},
{id: 3, name: 'Item 3'},
],
list2: [
{id: 4, name: 'Item 4'},
{id: 5, name: 'Item 5'},
{id: 6, name: 'Item 6'},
],
drag: true,
},
});
動畫
目前已經有完整的功能了,但是畫面效果好像不太夠,可以使用官方提供的動畫效果:
<div id="app">
<draggable v-bind="dragOptions" v-model="list" group="myItem" @start="drag=true" @end="drag=false">
<button v-for="element in list" :key="element.id">{{ element.name }}</button>
</draggable>
</div>
const app = new Vue({
el: '#app',
data: {
list: [
{id: 1, name: 'Item 1'},
{id: 2, name: 'Item 2'},
{id: 3, name: 'Item 3'},
],
drag: true,
},
computed:{
dragOptions() {
return {
animation: 300,
group: "description",
disabled: false,
ghostClass: "ghost"
};
},
},
});
參考資料:
Github - SortableJS/Vue.Draggable
官方範例
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com