基于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 冒泡排序 正序和倒序实现代码
Dec 14 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
js获取当前日期前七天的方法
Feb 28 Javascript
jquery插件qrcode在线生成二维码
Apr 26 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
AngularJS service之select下拉菜单效果
Jul 28 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
Vue CL3 配置路径别名详解
May 30 Javascript
JS立即执行的匿名函数用法分析
Nov 04 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
JavaScript实现密码强度实时验证
Mar 18 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
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
简单谈谈React中的路由系统
2017/07/25 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python写日志封装类实例
2015/06/28 Python
python动态加载包的方法小结
2016/04/18 Python
python生成ppt的方法
2018/06/07 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python分类测试代码实例汇总
2020/07/23 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
标准导师推荐信(医学类)
2013/10/28 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
个人年终总结范文
2015/03/09 职场文书
建国大业观后感
2015/06/01 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs