zoukankan      html  css  js  c++  java
  • vue2.0使用Sortable.js实现的拖拽功能

    简介

    在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jQuery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组。但是当把vue升级到2.0以上后发现拖拽功能失效了,于是使用了下面代码。

    该案例主要是在用于vuejs2.0中实现的拖拽功能,用到的的js有Sortable.js,vuedraggable.js,当然还有vue.min.js,提供的案例使用的require.js加载.

    html主要代码

    1 <draggable :list="list2" :move="getdata" @update="datadragEnd" :options="{animation: 300,handle:'.dargDiv'}">
    2         <transition-group name="list-complete" >
    3             <div v-for="element in list2" :key="element.it.name"  class="list-complete-item">
    4                 <div class="styleclass dargDiv">{{element.id}}</div>
    5                 <div class="styleclass">{{element.it.name}}</div>
    6 
    7             </div>
    8         </transition-group>
    9    </draggable>

    css代码

     1 body{
     2     font-family:'微软雅黑'
     3 }
     4 [v-cloak]{
     5     display:none;
     6 }
     7 #example{
     8     1000px;
     9     margin:0 auto;
    10 }
    11 .list-complete-item {
    12   transition: all 1s;
    13     height:50px;
    14     line-height: 50px;
    15     background: #000;
    16     color:#fff;
    17     text-align: center;
    18     font-size:24px;
    19     margin-top:10px;
    20 }
    21 .styleclass{
    22     100px;
    23     float:left;
    24 }
    25 .list-complete-enter, .list-complete-leave-active {
    26   opacity: 0;
    27   height: 0px;
    28   margin-top: 0px;
    29   padding: 0px;
    30   border: solid 0px;
    31 }
    32 .list-complete-sortable-chosen,.list-complete-sortable-ghost{
    33  opacity: 0;
    34   height: 0px;
    35   margin-top: 0px;
    36   padding: 0px;
    37   border: solid 0px;
    38 }
    39 .dargDiv{
    40     cursor:move;
    41     background:red;
    42 }
    43 .wrods{
    44     margin-top:50px;
    45 }
    46 p{
    47     line-height:24px;
    48     text-align:center;
    49 }

    js代码

     1 require(['vue','vuedraggable'],function(Vue,draggable){
     2     Vue.component('draggable', draggable);
     3      new Vue({
     4         el: '#example',
     5         data: {
     6            list2:[
     7            {id:"id1",it:{name:'bbbb'}},
     8            {id:"id2",it:{name:'2222'}},
     9            {id:"id3",it:{name:'3333'}},
    10            {id:"id4",it:{name:'4444'}}
    11            ]
    12         },
    13         methods:{
    14             getdata: function(evt){
    15                 console.log(evt.draggedContext.element.id);
    16             },
    17             datadragEnd:function(evt){
    18                 console.log('拖动前的索引:'+evt.oldIndex);
    19                 console.log('拖动后的索引:'+evt.newIndex);
    20 
    21             }
    22 
    23         }
    24     })
    25 
    26 })

    里面的可配置的很多细节请参考参考地址,这里不做详细介绍.

    可下载案例地址:https://github.com/hxlmqtily1314/Vue.Draggable-case
    参考地址:https://github.com/SortableJS/Vue.Draggable

  • 相关阅读:
    asp.net中页面传值的几种经典方法
    关于ASp.NEt方面的好书,不得不看啊!!!
    Qt Creator 窗体控件自适应窗口大小布局
    自己动手打造T9510E EMUIB502新功能
    OpenCV&Qt学习之四——OpenCV 实现人脸检测与相关知识整理
    Qt 中获取本机IP地址
    嵌入式Linux中GPS信息读取与处理
    OpenCV 学习资源整理
    新Outlook邮箱的客户端设置
    Qt 中显示中文
  • 原文地址:https://www.cnblogs.com/yuwenjing0727/p/7146822.html
Copyright © 2011-2022 走看看