基于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实现table单双行不同显示并能单行选中
Jul 25 Javascript
js去字符串前后空格5种实现方法及比较
Apr 03 Javascript
JavaScript中this的使用详解
Nov 08 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 Javascript
详解vue v-model
Aug 31 Javascript
vue3中的组件间通信
Mar 31 Vue.js
详解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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php获得文件扩展名三法
2006/11/25 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
javascript新手语法小结
2008/06/15 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python画环形图的方法
2020/03/25 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
科级干部考察材料
2014/02/15 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
社区服务标语
2014/07/01 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
中学推普周活动总结
2015/05/07 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python