angular drag and drop (ngDraggable) 笔记


这是原文 https://github.com/fatlinesofcode/ngDraggable

这是另一个dnd,这比较灵活,可以监听事件。我只用简单的排序功能,其他没去了解太多。有机会遇到功能扩展,会在这里更新。

 

功能与需求:

-在angular filter orderBy 里 reorder 对象。

 

基本注入一下和写些controller

 

        var app = angular.module('App', ['ngAnimate','ngDraggable']);
        app.controller("App.ctrl", ['$scope', '$timeout', function ($scope, $timeout) {
            $scope.FAQs = [
                {
                    id:1,
                    question: 'q1',
                    answer: 'a1',
                    sort : 1
                },
                {
                    id: 2,
                    question: 'q2',
                    answer: 'a2',
                    sort: 2
                },
                {
                    id: 3,
                    question: 'q3',
                    answer: 'a3',
                    sort: 3
                }
            ];
             
            $scope.onDropComplete = function (dragResource, dropResource) {       
                var sortRecord = dragResource.sort;
                dragResource.sort = dropResource.sort;
                dropResource.sort = sortRecord;

            } 
             
        }])
    </script>

 

HTML

 

<div 
    ng-repeat="FAQ in FAQs | orderBy : 'sort' : true" 
    ng-drop="true"  
    ng-drop-success="onDropComplete($data,FAQ)" 
                                    
    class="card-panel ">

    <div ng-drag="true" ng-drag-data="FAQ" class="row">
        <div class="col s10">
            <p>{{FAQ.question}}</p>
            <p>{{FAQ.answer}}</p>
        </div>
        <div class="col s2 center">
            <a class="btn-floating waves-effect waves-light"><i class="mdi-action-delete"></i></a>
            <a href="#createFAQ" class="btn-floating waves-effect waves-light modal-trigger"><i class="mdi-editor-mode-edit"></i></a>
        </div>
    </div>
</div>

 

  

 

 CSS

	[ng-drag] {
		-moz-box-sizing: border-box;
		-webkit-box-sizing: border-box;
		box-sizing: border-box;
		-moz-user-select: -moz-none;
		-khtml-user-select: none;
		-webkit-user-select: none;
		-ms-user-select: none;
		user-select: none;
	}

	[ng-drag] {
		cursor: move;
	}

     
	[ng-drag].drag-over { 
        //开始drag位置,去到其他elem是没有反应的,这里是设计错误
	}

	[ng-drag].dragging {
        //开始drag位置 background-color: #e8f5e9 ; } [ng-drop] {             } [ng-drop].drag-enter {
         //drag进入 background-color: #f1f8e9; } [ng-drop] div {
      //这是为了在drag时,可以在所有elem的之上   position: relative;   z-index: 2;   }

  

原理:

在drag complete时,出发事件,把2个对象的sort对换。

 

 

posted @ 2015-07-09 13:14  泉油  阅读(1457)  评论(0编辑  收藏  举报
Web Design Johor Bahru Malaysia - Stooges