基于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 相关文章推荐
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
Jquery遍历Json数据的方法
Apr 20 Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
Mar 29 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 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
一个简单计数器的源代码
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
党员创先争优承诺书
2014/03/26 职场文书
学校运动会广播稿
2014/10/11 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
小学中队活动总结
2015/05/11 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技