基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能


Posted in Javascript onApril 02, 2019

ngDraggable.js是一款比较简单实用的angularJS拖拽插件,借助于封装好的一些自定义指令,能够快速的进行一些拖拽应用开发。首先先介绍一些基本的概念;

•ng-drop:是否允许放入拖拽元素

•ng-drop-success($data, $event):拖拽元素放入的回调;$data:放入元素数据;$event拖拽事件对象

•ng-drag:元素是否允许拖拽

•ng-drag-success($data, $event):$data:拖拽元素数据,$event拖拽元素事件对象

•ng-drag-data:拖拽数据

官方链接:https://github.com/fatlinesofcode/ngDraggable

在拖拽进行元素排序时,只需动态更改下循环数组元素顺序;具体事件绑定drop绑定在父元素,drag绑定在子元素即可,具体实现代码如下:

效果图如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <style>
    .drag-container {
      display: flex;
      justify-content: flex-start;
      align-items: center;
    }
    .drag-container .drag-box {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 200px;
      height: 200px;
      margin: 20px;
      color: #fff;
      font-size: 20px;
      font-weight: bold;
    }
    .drag-container .drag-box .drag-item {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 150px;
      height: 150px;
    }
  </style>
  <title>ng-dragger</title>
</head>
<body ng-app="app" ng-controller="draggerController">
  <div class="drag-container">
    <div ng-repeat="item in dragArr" class="drag-box" ng-drop="true" ng-drop-success="onDropComplete($index, $data, $event)">
      <div class="drag-item" ng-drag="true" ng-drag-data="{{item}}" ng-style="{background: item.color}">{{item.text}}</div>
    </div>
  </div>
  <script src="https://cdn.bootcss.com/angular.js/1.3.1/angular.js"></script>
  <script src="https://cdn.bootcss.com/ngDraggable/0.1.11/ngDraggable.js"></script>
  <script>
    var myApp = angular.module('app', ['ngDraggable']);
    myApp.controller('draggerController', function($scope) {
      $scope.dragArr = [{
        text: '方块1',
        color: 'green',
        key: 'arr1'
      }, {
        text: '方块2',
        color: 'blue',
        key: 'arr1'
      }, {
        text: '方块3',
        color: '#888',
        key: 'arr1'
      }, {
        text: '方块4',
        color: '#888',
        key: 'arr2'
      }, {
        text: '方块5',
        color: '#888',
        key: 'arr2'
      }, {
        text: '方块6',
        color: '#888',
        key: 'arr2'
      }];
      $scope.onDropComplete = function(index, obj, $event) {
        var otherObj = $scope.dragArr[index];
        var otherIndex = $scope.dragArr.findIndex(vv => Object.is(vv.text, obj.text));
        if (otherObj.key !== obj.key) return;
        $scope.dragArr[index] = obj;
        $scope.dragArr[otherIndex] = otherObj;
      }
    })
  </script>
</body>
</html>

基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能

总结

以上所述是小编给大家介绍的基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
div+css布局的图片连续滚动js实现代码
May 04 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
使用Node.js在深度学习中做图片预处理的方法
Sep 18 Javascript
微信小程序聊天功能的示例代码
Jan 13 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
详解vue后台系统登录态管理
Apr 02 #Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 #Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 #Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 #Javascript
基于Vue插入视频的2种方法小结
Apr 02 #Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 #Javascript
小程序实现自定义导航栏适配完美版
Apr 02 #Javascript
You might like
php判断当前操作系统类型
2015/10/28 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
js 处理URL实用技巧
2010/11/23 Javascript
JQuery live函数
2010/12/24 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
python读取html中指定元素生成excle文件示例
2014/04/03 Python
详解Python中for循环的使用
2015/04/14 Python
python 批量修改/替换数据的实例
2018/07/25 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
火锅店创业计划书范文
2014/02/02 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
护林员个人总结
2015/03/04 职场文书
费用申请报告范文
2015/05/15 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
2016简单的租房合同范本
2016/03/18 职场文书