angular drag and drop ,marceljuenemann 笔记

这是原文 http://marceljuenemann.github.io/angular-drag-and-drop-lists/demo/#/simple

看起来很多功能,所以我只记入我需要的部分就好,等下次需要更多功能,再添加笔记内容。

简单需求:

·在dnd时,array里的对象会因为dnd而排序

·在drag时,css可以有些简单效果,引导用户使用

·不能在view里给orderBy

先做基本的注入

<script src="http://marceljuenemann.github.io/angular-drag-and-drop-lists/angular-drag-and-drop-lists.js"></script>
<script>
    var app = angular.module('App', ['dndLists']); 
...

在view上只需给上属性就好

<ul dnd-list="FAQs" class="col s12"> 
    <li ng-repeat="FAQ in FAQs" 
        dnd-draggable="FAQ" 
        dnd-moved="FAQs.splice($index, 1)" 
        dnd-effect-allowed="move" 
        class="card-panel ">
        {{ FAQ.question }}
    </li>
</ul>

  

css (简化版)

ul[dnd-list] .dndDraggingSource {
    display:none;
}

ul[dnd-list] .dndPlaceholder {
    display: block;
    background-color: #ddd;
    height:130px;
}

  

原理:

在开始drag时,本drag的elem会display none, 同时在移动时会出现placeholder,这是让你drop的地方。

会遇到的问题:

由于是指令自己给elem在drop的位置,所以他只给简单的elem (<li class="dndPlaceholder"></li>)。是不是想问“如果是div被drag呢?指令是否会给同样的tagName ?

答:不是!这东西就是这里不好!同时被指令创建的elem placeholder应该具备被drag的css样式。

  不能给orderBy(angular filter 功能),因为这plugin的demo没有给orderby做示范。我做了测试,不能兼容,因为drag的对象,drop的是位置,这样就完蛋咯~