基于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 相关文章推荐
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
js实现音频控制进度条功能
Apr 01 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
使用Typescript和ES模块发布Node模块的方法
May 25 Javascript
如何在JS文件中获取Vue组件
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
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
layui的select联动实现代码
2019/09/28 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
应聘教师推荐信
2013/10/31 职场文书
英文自我鉴定
2013/12/10 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
高一化学教学反思
2014/02/05 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers