ngDraggable简单使用及实现拖拽排序

  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绑定在子元素即可,具体实现代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <style>
 9         .drag-container {
10             display: flex;
11             justify-content: flex-start;
12             align-items: center;
13         }
14
15         .drag-container .drag-box {
16             display: flex;
17             align-items: center;
18             justify-content: center;
19             width: 200px;
20             height: 200px;
21             margin: 20px;
22             color: #fff;
23             font-size: 20px;
24             font-weight: bold;
25         }
26
27         .drag-container .drag-box .drag-item {
28             display: flex;
29             align-items: center;
30             justify-content: center;
31             width: 150px;
32             height: 150px;
33         }
34     </style>
35     <title>ng-dragger</title>
36 </head>
37
38 <body ng-app="app" ng-controller="draggerController">
39     <div class="drag-container">
40         <div ng-repeat="item in dragArr" class="drag-box" ng-drop="true" ng-drop-success="onDropComplete($index, $data, $event)">
41             <div class="drag-item" ng-drag="true" ng-drag-data="{{item}}" ng-style="{background: item.color}">{{item.text}}</div>
42         </div>
43     </div>
44
45     <script src="https://cdn.bootcss.com/angular.js/1.3.1/angular.js"></script>
46     <script src="https://cdn.bootcss.com/ngDraggable/0.1.11/ngDraggable.js"></script>
47     <script>
48         var myApp = angular.module(‘app‘, [‘ngDraggable‘]);
49         myApp.controller(‘draggerController‘, function($scope) {
50             $scope.dragArr = [{
51                 text: ‘方块1‘,
52                 color: ‘green‘,
53                 key: ‘arr1‘
54             }, {
55                 text: ‘方块2‘,
56                 color: ‘blue‘,
57                 key: ‘arr1‘
58             }, {
59                 text: ‘方块3‘,
60                 color: ‘#888‘,
61                 key: ‘arr1‘
62             }, {
63                 text: ‘方块4‘,
64                 color: ‘#888‘,
65                 key: ‘arr2‘
66             }, {
67                 text: ‘方块5‘,
68                 color: ‘#888‘,
69                 key: ‘arr2‘
70             }, {
71                 text: ‘方块6‘,
72                 color: ‘#888‘,
73                 key: ‘arr2‘
74             }];
75
76             $scope.onDropComplete = function(index, obj, $event) {
77                 var otherObj = $scope.dragArr[index];
78                 var otherIndex = $scope.dragArr.findIndex(vv => Object.is(vv.text, obj.text));
79                 if (otherObj.key !== obj.key) return;
80                 $scope.dragArr[index] = obj;
81                 $scope.dragArr[otherIndex] = otherObj;
82             }
83
84         })
85     </script>
86 </body>
87
88 </html>

  效果图如下:

原文地址:https://www.cnblogs.com/gerry2019/p/10640911.html

时间: 2024-10-04 02:01:16

ngDraggable简单使用及实现拖拽排序的相关文章

使用knockout-sortable实现对自定义菜单的拖拽排序

在开始之前,照例,我们先看效果和功能实现. 关于自定义菜单的实现,这里就不多说了,需要了解的请访问:http://www.cnblogs.com/codelove/p/4838766.html 这里需要说明的是排序的实现. 我们先来看看关键的页面代码: <div class="row"> <div class="col-lg-12 full-width" id="leftMenus"> <div class=&quo

RecyclerView实现条目Item拖拽排序与滑动删除

RecyclerView实现条目Item拖拽排序与滑动删除 版权声明:转载请注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 效果演示 直播视频讲解:[http://pan.baidu.com/s/1miEOtwG1 推荐大家结合我直播的视频看效果更好. 本博客源码传送门. 需求和技术分析 RecyclerView Item拖拽排序::长按RecyclerView的Item或者触摸Item的某个按钮. RecyclerView Item滑动删除:

自定义控件——可拖拽排序的ListView

前言 最经研究了一下拖拽排序的ListView,跟酷狗里的播放列表排序一样,但因为要添加自己特有的功能,所以研究了好长时间.一开始接触的是GitHub的开源项目--DragSortListView,实现的效果和流畅度都很棒.想根据他的代码自己写一个,但代码太多了,实现的好复杂,看别人的代码你懂的了,就去尝试寻找其他办法.最后还是找到了更简单的实现方法,虽然跟开源项目比要差一点,但对我来说可以了,最重要的是完全可以自定义. 实现的效果如下: 主要问题 如何根据触摸的位置确定是哪个条目? ListV

zTree的拖拽排序

ztree本身是可以支持拖拽的,但是却没有找到明确的支持拖拽的排序,也就是说,在拖拽过程中,需要自定义维护拖拽后的顺序并保存至后台. 在这样一个比较常规的需求情况下,网上也有朋友给出了一些解决方案,比如自定义一个tree传入ztree, 不使用ztree的识别字段,而是使用自定义字段,然后当ztree的节点发生变化时,维护这些自定义字段,从而使得整个tree是有序的,并支持拖拽. 上边的这个解决方案,有一个问题,就是使用javascript构造的tree,传入ztree之后,会发生堆栈溢出,初步

ListView列表拖拽排序

ListView列表拖拽排序可以参考Android源代码下的Music播放列表,他是可以拖拽的,源码在[packages/apps/Music下的TouchInterceptor.java下]. 首先是搭建框架,此处的ListView列表类似于QQ消息列表,当然数据只是模拟,为了简单起见,没有把ListView的条目的所有的属性全部写上.首先是消息的实体类Msg.java: package me.chenfuduo.mymsgdrag; public class Msg { private in

react 拖拽排序

react 拖拽排序.项目中用到了,记一笔.没有用react-dnd, 没有用react-beautiful-dnd, 因为需求简单,所以就自己撸了一个. 代码很简单 定义css, 两个动画 .drag-up { -webkit-animation: dragup ease 0.2s 1; animation: dragup ease 0.2s 1; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; bac

Android基础控件——RecyclerView实现拖拽排序侧滑删除效果

RecyclerView实现拖拽排序侧滑删除效果 事先说明: RecyclerView是ListView的升级版,使用起来比ListView更规范,而且功能和动画可以自己添加,极容易扩展,同样也继承了ListView复用convertView和ViewHolder的优点.   思路分析: 1.导包.在布局中使用RecyclerView 2.需要一个JavaBean用来存储展示信息 3.需要一个填充RecyclerView的布局文件 4.在代码中找到RecyclerView,并为其绑定Adapte

一款优雅的小程序拖拽排序组件实现

前言 最近po主写小程序过程中遇到一个拖拽排序需求. 上网一顿搜索未果, 遂自行实现. 这次就不上效果图了, 直接扫码感受吧. 灵感 首先由于并没有啥现成的小程序案例给我参考. 所以有点无从下手, 那就找个h5的拖拽实现参考参考. 于是在jquery插件网看了几个拖拽排序实现后基本确定了思路. 大概就是用 transform 做变换. 是的, 灵感这种东西就是借鉴过来的-- 确定需求 要能拖拽, 毕竟是拖拽排序嘛, 拖拽肯定是第一位. 要能排序, 先有拖拽后有天 -- 跑偏了, 拖拽完了肯定是要

jQuery拖拽插件制作拖拽排序特效

基于jQuery拖拽插件制作拖拽排序特效是一款非常实用的鼠标拖拽布局插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <div class="item item2"><