vue2.0使用Sortable.js实现的拖拽功能示例


Posted in Javascript onFebruary 21, 2017

简介

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

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

实现效果

实现后的效果如图所示:

vue2.0使用Sortable.js实现的拖拽功能示例

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);
        
      }
      
    }
  })
  
})

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

可下载案例地址:Vue.Draggable-case_3water.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype Hash对象 学习
Jul 19 Javascript
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
完善的jquery处理机制
Feb 21 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
vue2中使用less简易教程
Mar 27 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
javascript 实现文本使用省略号替代(超出固定高度的情况)
Feb 21 #Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 #Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 #Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
Feb 21 #Javascript
从零学习node.js之文件操作(三)
Feb 21 #Javascript
JavaScript实现按键精灵的原理分析
Feb 21 #Javascript
javascript 组合按键事件监听实现代码
Feb 21 #Javascript
You might like
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
在Python中使用模块的教程
2015/04/27 Python
python批量修改文件编码格式的方法
2018/05/31 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
python3实现多线程聊天室
2018/12/12 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
python实现银行管理系统
2019/10/25 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
五年后的职业生涯规划
2014/03/04 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
pytorch Dropout过拟合的操作
2021/05/27 Python
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
MySQL去除密码登录告警的方法
2022/04/20 MySQL