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对换。

 

 

你可能感兴趣的:(Angular)