基于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 相关文章推荐
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
有趣的javascript数组定义方法
Sep 10 Javascript
JS实现的一个简单的Autocomplete自动完成例子
Apr 16 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
Nov 30 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
基于vue-resource jsonp跨域问题的解决方法
Feb 03 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 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实现当前页面点击下载文件的简单方法
2016/09/22 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
DWR Ext 加载数据
2009/03/22 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python排序算法实例代码
2017/08/10 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
简单的JAVA编程面试题
2013/03/19 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
CAD制图人员的自荐信
2014/02/07 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技