基于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 相关文章推荐
js 链式延迟执行DOME
Jan 04 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
详解js树形控件—zTree使用总结
Dec 28 Javascript
angularJS 指令封装回到顶部示例详解
Jan 22 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
vue登录路由验证的实现
Dec 13 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
Dec 28 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
如何阻止移动端浏览器点击图片浏览
Aug 29 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
Jquery 弹出层插件实现代码
2009/10/24 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
浅谈React高阶组件
2018/03/28 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python显示天气预报
2014/03/02 Python
python中循环语句while用法实例
2015/05/16 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
机关门卫岗位职责
2013/12/30 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
525心理活动总结
2014/07/04 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
Nginx内网单机反向代理的实现
2021/11/07 Servers
海弦WR-800F
2022/04/05 无线电
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技