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 相关文章推荐
Javascript中暂停功能的实现代码
Mar 04 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
js中文逗号转英文实现
Feb 11 Javascript
jQuery获取对象简单实现方法小结
Oct 30 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
Jun 11 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 Javascript
vue实现购物车选择功能
Jan 10 Javascript
vue实现评价星星功能
Jun 30 Javascript
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
symfony表单与页面实现技巧
2015/01/26 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
网页常用特效代码整理
2006/06/23 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
python多线程之事件Event的使用详解
2018/04/27 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python中按键来获取指定的值
2019/03/02 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
python线程里哪种模块比较适合
2020/08/02 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
Python实现微信表情包炸群功能
2021/01/28 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
外语系毕业生求职自荐信
2014/04/12 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
小学国庆节活动总结
2015/03/23 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
《山中访友》教学反思
2016/02/24 职场文书